zoukankan      html  css  js  c++  java
  • 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.   
    9.       default:  
    10.          QDialog::keyPressEvent(event);  
    11.    }  
    12. }  

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

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

  • 相关阅读:
    Go语言之Go 语言函数
    Go语言之Go 语言循环语句
    Go语言之Go 语言条件语句
    Go语言之Go 语言运算符
    Go语言之GO 语言注释
    Go语言之Go 语言类型别名
    7.19 PDO(php data object-php数据对象)数据库抽象层
    7.15 原生js写ajax
    7.15 文件打开后点击打开下级文件
    6.28 js和php数组去重
  • 原文地址:https://www.cnblogs.com/findumars/p/6413859.html
Copyright © 2011-2022 走看看