Bab*_*oey 18 events qt event-loop signals-slots
我有一个Qt应用程序与这种main()...
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
MainWindow mainWin;
... A separate, non-GUI thread is launched here
mainWin.Init();
mainWin.show();
app.exec();
}
Run Code Online (Sandbox Code Playgroud)
在mainWin需要知道何时可以开始与mainWin通信之前创建的另一个线程.但由于mainWin使用Qt信号,插槽,定时器等,因此在事件循环运行之前(通过exec()),它还没有真正准备好.
我的问题是:当事件循环开始时是否会发出一些信号或事件?
考虑一下.在mainWin.Init()中,您可以创建类似QTimer的内容,甚至可以调用.start()来启动它.但实际上它不会被运行并在调用exec()之前触发事件.这就是我需要知道事件循环何时真正开始的原因.
for*_*idt 14
您可以在exec()
通话前向您的窗口发送信号.这将在一个app
信号队列中放入一个条目.当exec()
运行时,信号将被传递,您的窗口将知道事件循环正在运行.
一种简单的方法是使用QTimer::singleShot(0, &mainWin, SLOT(onEventLoopStarted()));
连接到窗口类的自定义槽的方法.
归档时间: |
|
查看次数: |
5908 次 |
最近记录: |