Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
启动同一QT_对象的两个实例->相互阻止?_Qt - Fatal编程技术网

启动同一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(); 此窗口有一个进度条 如果启动两个同时运行的实例,则只有第一个

我想启动同一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();
此窗口有一个进度条

如果启动两个同时运行的实例,则只有第一个实例的进度条得到更新,直到第一个实例完成。当这种情况发生时,第二个实例的进度条突然跳到~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[它正在生成线程,并且在第二个对话框启动时不再执行]