问:如何捕获表明所有gui元素都准备就绪的事件

时间:2011-03-28 22:08:58

标签: c++ events qt qt4

我想知道是否有可能捕获全部生成的事件 Qt对象已初始化并准备就绪?

似乎有些事情无法在window的构造函数中完成。它们在插槽实现中工作正常。

例如,当我想访问我的应用程序的根窗口时,我会这样做

// in *.h
MainWindow* rootWindow

// in *.cpp
rootWindow = qobject_cast<MainWindow *>(this->window());

如果在构造函数中完成,我就无法使用rootWindow对象 - 它会导致运行时错误。

没有相关的插槽可供实施。并且在QMainWindow类中创建事件不是虚拟的。

感谢您的帮助:)

2 个答案:

答案 0 :(得分:9)

您可以使用单次计时器。在主窗口类中,定义一个名为say appReady()的槽函数。在构造函数中,使用QTimer::singleShot(0, this, SLOT(appReady()));创建并连接单个计时器。一旦事件循环启动并运行,并且没有更多未决的启动事件,此计时器应该立即启动。

答案 1 :(得分:0)

如何确定根窗口实际上是MainWindow?在项目生命周期的后期,您可以将窗口小部件提供给不同的父窗口(例如,用于布局目的的几层QFrame装饰),此代码将失败。

将其作为构造函数中的显式参数传递。

除非它一直是MainWindows:)