如何在其构造函数(Qt GUI)之后运行类方法?

han*_*dle 5 c++ user-interface qt

在程序的 main() 函数中构造并显示 QMainwindow 对象。该对象的构造器用于创建所有 GUI 小部件。它包含当前在 QMainWindow 小部件可见之前运行的附加代码(或方法调用)。

此代码/方法应在 QMainWindow 构造函数之后运行一次,即当应用程序窗口可见时。

根据showEvent的文档,它可能会运行多次。

我是否需要在此事件中使用某种切换标志,或者是否有“更好”的解决方案(我以为我读到 QTimer 可用于将方法排队到事件循环中)?

小智 5

您可以尝试使用超时为 0 秒的 Qt 单次计时器。在主窗口构造函数的末尾调用此函数,将回调函数连接为插槽:

QTimer::singleShot( 0, this, SLOT( onLoad() ) );                    
Run Code Online (Sandbox Code Playgroud)

  • 在我看来,`QMetaObject::invokeMethod` 和 `Qt::QueuedConnection` 看起来更具可读性,那个计时器。 (2认同)