2012-02-08 4 views
1

루프에서 Qapplication.exec를 호출하면 적절한 결과가 제공되지 않습니다. 은 누군가가 당신이 당신의 프로그램을 종료 할 때까지 일반적으로 반환하지 않습니다 나에게이루프에서 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(); 
    } 
    } 

답변

2

QApplication.exec()처럼 thing..thanks

뭔가 아래의 작업을 수행하는 몇 가지 다른 아이디어를 줄 수 있습니다. documentation은 어떤 상황에서는 컨트롤이 QApplication.exec() 코드를 반환하지 않을 수도 있음을 언급합니다.

두 개의 QApplication 인스턴스를 동시에 실행하려면 두 개의 개별 프로그램을 호출하거나 동일한 프로그램을 다른 명령 줄 인수로 두 번 호출해야 할 수 있습니다.

또 다른 가능성은 두 개의 스레드를 사용하는 것입니다.하지만 그렇게 할 이유가 없다면 권장하지 않습니다.

1

의 QApplication 문서에서 발췌 :

의 QApplication은 윈도우 시스템 및 기타 소스에서 모든 이벤트가 처리 및 파견 메인 이벤트 루프가 포함되어 있습니다.

의도적으로 응용 프로그램에는 하나의 메인 이벤트 루프 만 있어야합니다.

exec은 QCoreApplication에서 상속됩니다.

QApplication.exec는 기본 이벤트 루프를 시작하고 exit()가 호출 될 때까지 대기합니다.

QApplication.exec를 여러 번 호출하는 것은 의미가 없습니다. 그것은 한번에 끝내야합니다.

0

Qt/C++ 관점에서 위젯은 모두 exec()으로 시작하는 동일한 Qt 메시지 펌프를 공유 할 수 있습니다.

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와 작업하지 않았으며 코드가 실행되지 않는 것처럼 보입니다.