启动同一QT_对象的两个实例->相互阻止?
我想启动同一QT_对象类的两个实例启动同一QT_对象的两个实例->相互阻止?,qt,Qt,我想启动同一QT_对象类的两个实例 marketana_quickwfa_dialog* madid = new marketana_quickwfa_dialog(((marketana_asksettings_dialog*)QObject::sender())->config_as_json(), sysuid, mconf); madid->show(); madid->start_quick_wfa(); 此窗口有一个进度条 如果启动两个同时运行的实例,则只有第一个
marketana_quickwfa_dialog* madid = new marketana_quickwfa_dialog(((marketana_asksettings_dialog*)QObject::sender())->config_as_json(), sysuid, mconf);
madid->show();
madid->start_quick_wfa();
此窗口有一个进度条
如果启动两个同时运行的实例,则只有第一个实例的进度条得到更新,直到第一个实例完成。当这种情况发生时,第二个实例的进度条突然跳到~80%。
表示2已执行,但GUI未更新
如果我启动两个实例,其中第二个通过互斥等待,直到第一个完成,
突然间,第一个实例不再在创建第二个实例后立即执行其start\u quick\u wfa代码。
表示1次执行被阻止?!2在等待1时仍被阻止
这是正确的QT行为吗?如果是,我能做什么
提前感谢。非常简单:start\u quick\u wfa方法阻塞。您并没有向我们展示重现问题的最小的、自包含的、可编译的示例。这不是Qt的行为,这是您自己代码的行为。警告:除了插槽内,不要在任何地方使用QObject::sender,即使这样,也要非常小心。您可以显示您创建的代码并显示另一个对话框吗?@RobbieE:谢谢,它在插槽内,此部分工作正常:此插槽只被调用两次,但是,一旦第二个对话框生成,第一个对话框就不会继续执行start\u quick\u wfa[它正在生成线程,并且在第二个对话框启动时不再执行该操作]这是在一个插槽中。基本上都是这个插槽的代码,所以当我接受marketana_asksettings_对话框时,它被调用,两个对话框都显示两次,所以这不是问题。但是,一旦第二个对话框生成,第一个对话框就不会继续执行start\u quick\u wfa[它正在生成线程,并且在第二个对话框启动时不再执行]