• 3794阅读
  • 5回复

qt5有没有窗体显示前事件? [复制链接]

上一主题 下一主题
离线hhq2000
 

只看楼主 倒序阅读 楼主  发表于: 2016-09-13
与qt4不同,qt5 showEvent事件在窗体显示后才触发,qt5有没有窗体显示前事件?可以控制窗体是否显示。
离线dbzhang800

只看该作者 1楼 发表于: 2016-09-13
你提到的Qt4和Qt5的这个差异是如何得出的,能给出一个具体可重现这个差异的例子吗?
离线hhq2000

只看该作者 2楼 发表于: 2016-09-18
mainwindow实现virtual void showEvent,方法。在这个方法中显示一个dialog。qt4在dialog关闭后才显示父窗体,qt5是mainwindow和dialog同时显示的。不知道是否可以说明问题。
qt5.4测试
离线dbzhang800

只看该作者 3楼 发表于: 2016-09-18
你用的什么平台,Windows7下,Qt4.8.5、Qt5.5.1、Qt5.6.1、Qt5.7.0 下,如下代码没发现你描述的问题

  1. #include <QApplication>
  2. #include <QDialog>
  3. #include <QMainWindow>
  4. class MainWindow : public QMainWindow
  5. {
  6. public:
  7.     MainWindow()
  8.     {
  9.         resize(800, 600);
  10.         setWindowTitle("MainWindow for show event test!");
  11.     }
  12. protected:
  13.     void showEvent(QShowEvent *evt)
  14.     {
  15.         QDialog dlg;
  16.         dlg.resize(400, 300);
  17.         dlg.exec();
  18.     }
  19. };
  20. int main(int argc, char *argv[])
  21. {
  22.     QApplication a(argc, argv);
  23.     MainWindow mw;
  24.     mw.show();
  25.     return a.exec();
  26. }


离线hhq2000

只看该作者 4楼 发表于: 2016-09-18
再测试了一下,的确不会了。晕倒。。。
是不是上次杀毒软件对他有干扰

只看该作者 5楼 发表于: 2016-12-16
估计是先调用了你的父类showEvent吧
ftpm
快速回复
限100 字节
 
上一个 下一个