我有一个为Linux和Windows编译的程序。在linux中,一切运行顺利,但是在Windows中,当我尝试使用QMessageBox弹出成功或失败通知时出现错误。该错误表明所有QWidget必须位于主gui线程中。这些窗口小部件由MainWindow创建和拥有,该窗口完全在主线程中(实例化并仅在main中使用)。使用相同的代码,可执行文件可以在Linux中顺利运行。为什么会有区别,我该怎么做才能在Windows上解决此问题?鉴于消息框是由主线程中已有的mainwindow类创建和使用的,我什至不知道如何将消息框移至主线程(如Windows错误所示)。
例如,我添加了以下代码,显示了MainWindow如何创建两个QMessageBox。
INSERT INTO `search_table` (id, txt)
VALUES (id,
CONCAT_WS(' ', table1.origname,
table2.byline,
... ) );
同样,此代码在我的Linux应用程序中完全正常。另外-我可以使用QProgressDialog来使用相同的技术来弹出进度条。它是由MainWindow创建和拥有的,在Windows或Linux中都不会引起任何问题。