Вызов Qapplication.exec несколько раз в цикле возможен. Если да, то как? - PullRequest
1 голос
/ 08 февраля 2012

вызов Qapplication.exec в цикле не дает правильных результатов.может кто-нибудь дать мне какую-то другую идею сделать следующее вещь ... спасибо

что-то вроде этого

public static void main(String args[]) {
        QNetworkProxy proxy = new QNetworkProxy(ProxyType.HttpProxy,Proxyname, port);
    QNetworkProxy.setApplicationProxy(proxy);
    for(int i=0; i<2;i++){
        QApplication.initialize(args);

                HelloWebKit widget = new HelloWebKit();
                widget.show();

                QApplication.exec();
    }
    }

Ответы [ 3 ]

2 голосов
/ 08 февраля 2012

QApplication.exec() обычно не возвращается, пока вы не выйдете из программы. В документации упоминается, что при некоторых обстоятельствах управление может не вернуться к коду, вызывающему QApplication.exec().

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

Другой возможностью было бы использование двух потоков, но я бы не советовал этого делать, если у вас нет очень убедительной причины для этого.

1 голос
/ 08 февраля 2012

Выдержка из документации QApplication:

QApplication содержит основной цикл событий, в котором все события из оконной системы и других источников обрабатываются и отправляются.

ByВ приложении должен быть только один главный цикл обработки событий.

exec наследуется от QCoreApplication.

QApplication.exec входит в цикл обработки основных событий и ожидает, пока exit () не будетПозвонил.

Вызов QApplication.exec много раз - это отсутствие.Это должно быть сделано раз и навсегда.

0 голосов
/ 16 июля 2012

С точки зрения Qt / C ++ все ваши виджеты могут использовать один и тот же насос сообщений Qt, запущенный exec().

public static void main(String args[]) {
    NetworkProxy proxy = new QNetworkProxy(ProxyType.HttpProxy,Proxyname, port);
    QNetworkProxy.setApplicationProxy(proxy);
    QApplication.initialize(args);

    for(int i=0; i<2;i++){
        HelloWebKit widget = new HelloWebKit();
        widget.show();
    }
    QApplication.exec();
}

Тем не менее, как говорится, я не работал с Qt Jambi, и код выглядит так, как будто он не работает как таковой.

...