1

ループで 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();
    }
    }
4

3 に答える 3

2

QApplication.exec()通常、プログラムを終了するまで戻りません。ドキュメントには、状況によっては制御がコード呼び出しに戻らない場合があることが記載されていますQApplication.exec()

QApplication の 2 つのインスタンスを同時に実行する場合は、2 つの別個のプログラムを呼び出すか、同じプログラムを異なるコマンド ライン引数で 2 回呼び出す必要があります。

別の可能性として 2 つのスレッドを使用することもできますが、そうする十分な理由がない場合はお勧めしません。

于 2012-02-08T06:13:46.957 に答える
0

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 を使用していないと言われていますが、コードはそのままでは実行されないようです。

于 2012-07-16T15:24:37.600 に答える
0

QApplication ドキュメントからの抜粋:

QApplication にはメイン イベント ループが含まれており、ウィンドウ システムやその他のソースからのすべてのイベントが処理され、ディスパッチされます。

設計上、アプリケーションにはメイン イベント ループが 1 つだけ存在する必要があります。

execQCoreApplication から継承されます。

QApplication.exec はメイン イベント ループに入り、exit() が呼び出されるまで待機します。

QApplication.exec を何度も呼び出すのはナンセンスです。それは一度だけ行われるべきです。

于 2012-02-08T09:40:52.410 に答える