2013-07-31 1 views
0

JNA를 사용하여 Java에서 QT 응용 프로그램을 실행해야합니다. 문제는 QT가 주 스레드에서 실행되어야한다는 것입니다. 그러나 다른 스레드에서 생성하고 qt 창을 만든 후 즉각 Java 응용 프로그램을 관리하고 JT를 통해 QT로 일부 데이터를 보내려고합니다. 다른 스레드에서 QTApp를 만들 때 "QAppplication이 주 스레드에서 생성되지 않았습니다"라는 경고 메시지가 나타나며 GUI에 대한 응답이 없습니다. 문제가 해결 되었습니까?JNA + running QT

답변

0

QThread에서 QCoreApplication을 만들 수 있습니다. 여기에 예를 들어 제가 최근에했던 일에서 니펫 :

class MyThread : public QThread 
{ 
public: 
void run() 
{ 
    int argc = 0; 
    char* argv[1];// = new char[]; 
    QCoreApplication a(argc,&argv[0]); 
    // More initilization code here 
    a.exec(); 
} 
}; 

메인에 실을 선언하고 thread.start();

+0

를 호출하지만 QCoreApplication에는 GUI 애플리케이션의 권리를 생성하지 않습니다에 대한 책임? (설명서에 따라) 스레드에서 GUI 창을 만들고 JNA를 사용하여 QT 창에 일부 데이터를 보내려고합니다. – user2381490

+0

QMainWindow는 백그라운드에서 실행하기 위해 핵심 응용 프로그램이 필요합니다. 그래서 이것이 작동해야합니다 ... 또한 http://www.qtforum.org/article/24553/running-qapplication-within-a-qthread-run.html을 확인하십시오. ? s = 7514b3d744a5ce211c4eb1655cdb5197cf5dc0c6 # post87061 – Ani

+0

사실, QGLWidget을 사용하여 창을 관리하는 외부 라이브러리 (시각화 라이브러리)를 사용합니다. QApplication을 QCoreApplication으로 대체 할 때 "qwidget이 GUI가 사용되지 않을 때 qwidget을 만들 수 없습니다"라는 메시지가 나타납니다. – user2381490