QT: Как открыть несколько окон (QWidgets) одновременно? - PullRequest
1 голос
/ 23 октября 2010

Я занимаюсь тестированием веб-интерфейса, который должен открывать два URL-адреса одновременно в двух окнах веб-набора.

Я уже сделал код для автоматизации тестирования.

1) Пользователь нажимает кнопку «Перейти» и открывается окно веб-набора (QWidget)

2) Объект класса TestBot выполняет тесты

3) Закрывается

Теперь мой вопрос : После нажатия на кнопку «Перейти», как открыть два (или три или более) окна веб-набора (QWidget), я имею в виду, как запустить несколько тест-ботов одновременно, чтобы они делают всю работу параллельно?

Я понял, что мне нужно посмотреть на многопоточность, я подошел, мне нужно наследовать 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, я пришел из веб-программирования. Надеюсь на вашу помощь!

Ответы [ 2 ]

1 голос
/ 26 октября 2010

Чтобы показать несколько окон одновременно, просто выровняйте их и покажите.

void ShowMultiple()
{
    QWidget *win1 = new QWidget();
    QWidget *win2 = new QWidget();
    QWidget *win3 = new QWidget();

    win1->show();
    win2->show();
    win3->show();
}

После запуска этого кода должно появиться 3 новых (пустых) окна. Однако, если вы пытаетесь выполнить некоторый код, который занимает много времени вместе с отображением окон, все может измениться. В этом случае вы можете посмотреть на потоки или примеры Qt :: Concurrent, имея в виду, что вы действительно действительно не можете связываться с пользовательским интерфейсом в любом другом потоке.

1 голос
/ 24 октября 2010

Вы можете попытаться использовать функции в пространстве имен QtConcurrent для асинхронных задач, особенно run one.

...