我想知道是否有可能捕获全部生成的事件 Qt对象已初始化并准备就绪?
似乎有些事情无法在window的构造函数中完成。它们在插槽实现中工作正常。
例如,当我想访问我的应用程序的根窗口时,我会这样做
// in *.h
MainWindow* rootWindow
// in *.cpp
rootWindow = qobject_cast<MainWindow *>(this->window());
如果在构造函数中完成,我就无法使用rootWindow对象 - 它会导致运行时错误。
没有相关的插槽可供实施。并且在QMainWindow类中创建事件不是虚拟的。
感谢您的帮助:)
答案 0 :(得分:9)
您可以使用单次计时器。在主窗口类中,定义一个名为say appReady()
的槽函数。在构造函数中,使用QTimer::singleShot(0, this, SLOT(appReady()));
创建并连接单个计时器。一旦事件循环启动并运行,并且没有更多未决的启动事件,此计时器应该立即启动。
答案 1 :(得分:0)
如何确定根窗口实际上是MainWindow?在项目生命周期的后期,您可以将窗口小部件提供给不同的父窗口(例如,用于布局目的的几层QFrame装饰),此代码将失败。
将其作为构造函数中的显式参数传递。
除非它一直是MainWindows:)