Qt编程中QDiaog的ESC建

最近使用QDialog时,按了下Esc键,导致QDialog被关闭,而后续的数据处理出现了问题。原来在QDialog中按下Esc键会默认调用reject()方法而不是closeEvent(QCloseEvent*event)或者其他事件。

处理的方法:

(注意:QDialog的close()函数也是会调用reject()函数和关闭函数,若在reject()中直接调用close()也会无法关闭,要先调用hide())

(1)重新实现reject()方法

[html] view plain copy

  1. void TestDialog::reject()
  2. {
  3. //关闭窗口,可以重新执行其他事件
  4. this->hide();  //或者this->accept()
  5. this->close();
  6. }

2、重写keyPressEvent(QKeyEvent *event)

[html] view plain copy

  1. void TestDialog::keyPressEvent(QKeyEvent *event)
  2. {
  3. switch(event->key()) {
  4. //进行界面退出,重写Esc键,否则重写reject()方法
  5. case Qt::Key_Escape:
  6. this->close();
  7. break;
  8. default:
  9. QDialog::keyPressEvent(event);
  10. }
  11. }

以上者两种方法都可以解决Esc键触发的问题,当然这只是在QDialog中是这种情况。在QWidget中没有reject ()和accept()槽函数,但可以通过keyPressEvent(QKeyEvent*event)来制定Esc键的功能。

http://blog.csdn.net/taiyang1987912/article/details/48053575

时间: 2024-10-13 05:04:27

Qt编程中QDiaog的ESC建的相关文章

Qt编程中QDiaog的ESC键(按下Esc键会默认调用reject()方法)

最近使用QDialog时,按了下Esc键,导致QDialog被关闭,而后续的数据处理出现了问题.原来在QDialog中按下Esc键会默认调用reject()方法而不是closeEvent(QCloseEvent*event)或者其他事件. 处理的方法: (注意:QDialog的close()函数也是会调用reject()函数和关闭函数,若在reject()中直接调用close()也会无法关闭,要先调用hide()) (1)重新实现reject()方法 [html] view plain copy

在windows下的QT编程中的_TCHAR与QString之间的转换

由于在windows下的QT编程中,如果涉及到使用微软的API,那么不可避免使用_TCHAR这些类型,因此在网上查了一下,其中一个老外的论坛有人给出了这个转换,因此在这里做一下笔记 : )#ifdef UNICODE #define QStringToTCHAR(x)     (wchar_t*) x.utf16() #define PQStringToTCHAR(x)    (wchar_t*) x->utf16() #define TCHARToQString(x)     QString:

qt编程

在QT编程中,对窗口进行菜单项和工具栏的添加,思路是先获取到整个窗口的菜单条,在菜单条中添加每一个的菜单项,然后再对菜单项添加一个个的动作Action,来实现功能.我使用的开发环境是Qt Creator5.5.0,默认生成的工程文件主文件中有ui->setupUi(this)这句代码,该代码意思大概就是将我们设置好的控件的属性和UI窗口进行链接,最终进行显示.但是如果在这句代码之前对菜单条进行菜单添加的话没有效果,要在这句代码之后进行添加,WindowTitle也是一样,而工具栏的添加则可以放在

【Qt编程】自动补全功能

最近写了一个查单词的类似有道词典的软件,里面就有一个自动补全功能(即当你输入一个字母时,就会出现几个候选项).这个自动补全功能十分常见,百度搜索关键词时就会出现.不过它们这些补全功能都是与你输入的进行首字匹配,有时也会不方便.例如,如果我输入一个"好",如果是首字匹配的话会出现下图: 如果是句中匹配的话,则是这种情况: 你可以根据自己的要求进行选择哪一种模式. Qt中自带QCompleter类来实现上面的自动补全功能,读者可以在Qt自带的demo中很容易的学会该类的使用.下面我要讲的是

Qt编程18:Qt调色板QPalette的使用

QPalette类有两个枚举类型, 枚举 1.ColorGroup CorGroup指的是3中不同的状态(什么时候设置颜色): 1>Active:获得焦点的状态. 2>Inactive:未获得焦点的状态. 3>Disable:不可用状态. 通常情况下,Active状态与Inactive状态下颜色显示是一致的,当然也可根据需要设置成不一样的颜色 2.ColorRole(设置什么颜色). ColorRole指的是颜色主题,即对窗体中不同部位颜色的分类,如QPalette::Window是指背

Qt编程获取鼠标移动事件

想做下面一个效果:想当鼠标移动到按钮上的时候,按钮就变大,图标换个大的,鼠标不在按钮上的时候,按钮就变小,图标也换成小的,感觉比较Cool 实现原理:为每个按钮设置监听属性 void MainHomeForm::init() { //为按钮注册事件 ui->SystemSetButton->installEventFilter(this); ui->ZoneSetButton->installEventFilter(this); } //系统监听器监听按钮对象 bool MainH

【Qt编程】调用讲述人

我们知道,win7系统自带有讲述人,即可以机器读出当前内容,具体可以将电脑锁定,然后点击左下角的按钮即可.之前在用Matlab写扫雷游戏的时候,也曾经调用过讲述人来进行游戏的语音提示.具体的Matlab脚本文件如下: sp=actxserver('SAPI.SpVoice');sp.Speak('你好,欢迎来到西安电子科技大学!Hello,Welcome to XD University!') Qt调用讲述人,需要使用专门的类,具体可以参考http://lynxline.com/qtspeech

我在学习编程中犯的两个最大错误

我在学习编程中犯的两个最大错误 投递人 itwriter 发布于 2012-09-10 09:24 评论(13) 有2616人阅读  原文链接  [收藏]  « » 英文原文:Suneel Chakravorty 一年前,我刚从大学毕业并且决定踏入社会.我想出了很多初始的想法并将他们实现,但我不懂编程. 听从 Yipit 联合创始人 Vin Vacant 的建议之后,我开始自学编程. 现在我终于学了足够多的知识来自己实现产品原型,一路走来,非常坎坷.如果你在跟我同样的路上,我希望你能避免犯跟我同

C\C++编程中:相对路径+绝对路径

电脑硬盘E盘下,建文件夹“test”,"test"下建立子文件夹“file”,"file"下建子文件夹“data”, 电脑资源管理器显示目录  E:\test\file\data 当前 路径 E:\test\file =================================================== 1. 相对路径 ,用正斜杠’/‘ 1.1向上一级目录指向 ./    表示当前路径,相当于E:\test\file ../  表示当前路径的上一级路