Far*_*zad 2 c++ qt signals-slots
我对Qt及其信号/插槽机制有疑问。
我创建了一个自定义小部件,并在其中创建了一个自定义SIGNAL(ShowMessage)。该信号连接到SLOT,该信号在主窗口的状态栏中显示消息(以及指定的超时)。
现在,我的班级中有一个操作需要很长时间才能执行,并且它阻塞了UI。我希望emit在开始操作之前发出信号,完成操作后,emit它会再次更新状态栏。像这样的东西:
emit ShowMessage(message, timeout);
// Do the long operation
emit ShowMessage(newMessage, timeout);
Run Code Online (Sandbox Code Playgroud)
但是我的问题是Qt似乎要等到整个操作完成后才用来更新状态栏newMessage。
有没有办法以某种方式“强制”立即处理我的信号,因为如果我想诉诸线程,那么我的生活将变得更加复杂!
有没有办法以某种方式“强制”立即处理我的信号
是的,有。:-)。显示第一条消息后,请致电QCoreApplication::processEvents()。这将强制在呼叫点处理所有未决事件。例如,
emit ShowMessage(message, timeout);
QCoreApplication::processEvents();
// Do the long operation
emit ShowMessage(newMessage, timeout);
Run Code Online (Sandbox Code Playgroud)