【问题标题】:QT: How to open several windows (QWidgets) at once?QT:如何一次打开多个窗口(QWidgets)?
【发布时间】:2010-10-23 16:25:37
【问题描述】:

我正在做一个 web 界面测试程序,它应该同时在两个 webkit 窗口中打开两个 url。

我已经为测试自动化编写了代码。

1) 用户按下“Go”按钮并打开 webkit (QWidget) 窗口

2) TestBot 类对象执行测试

3) 关闭

现在我的问题:点击“Go”按钮后,如何打开两个(或三个或更多)webkit (QWidget) 窗口,我的意思是,如何同时启动多个 TestBot所以他们并行完成所有工作?

我明白,我需要查看多线程,我想我需要将 QThread 继承到我的 TestBot 类定义中作为“class TestBot : public QThread”,但这是正确的解决方案吗?我做得对吗?接下来要做什么?

我不能把代码写成:

QThread process1;
QThread process2;
process1->start();
//some code here
process1->quit();

process2->start();
//some code here
process2->quit();

让一切并行工作?

我是 Winapp 世界的新手,我来自 Web 编程。希望得到您的帮助!

【问题讨论】:

    标签: c++ qt qt4 pthreads qthread


    【解决方案1】:

    为了一次显示多个窗口,只需将它们排列并显示即可。

    void ShowMultiple()
    {
        QWidget *win1 = new QWidget();
        QWidget *win2 = new QWidget();
        QWidget *win3 = new QWidget();
    
        win1->show();
        win2->show();
        win3->show();
    }
    

    此代码运行后,应该会显示 3 个新的(空白)窗口。但是,如果您尝试执行一些需要很长时间并显示窗口的代码,情况可能会发生变化。在这种情况下,您可能需要查看线程或 Qt::Concurrent 示例,记住您真的,真的不能在任何其他线程中弄乱 UI。

    【讨论】:

      【解决方案2】:

      您可以尝试将QtConcurrent namespace 中的函数用于异步任务,特别是run 之一。

      【讨论】:

      • 但请记住,您不能在 gui 线程之外触摸 gui 类
      • 是的,我知道。我会在 Gui Thread 中打开所有小部件并使用 QtComponent 在工作线程中启动任务
      猜你喜欢
      • 1970-01-01
      • 2016-09-03
      • 2013-08-02
      • 2023-04-04
      • 2020-02-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-21
      相关资源
      最近更新 更多