웹 페이지를로드하고 표시하는 메인 스레드가 있습니다. 다른 스레드가 실행되고 있는데, 디버그 메시지가 콘솔에 출력됩니다. 그러나 QT-Thread를 실행하면 웹 페이지가로드되지 않습니다. 스레드의 생성자에 웹 페이지 로딩을 시도했지만 여기서도 도움이되지 않습니다. 여기에 코드가 있습니다.Qthread 동기화 문제를 극복하는 방법은 무엇입니까?
class MyJavaScriptOperations : public QObject {
Q_OBJECT
public:
Q_INVOKABLE qint32 MultOfNumbers(int a, int b) {
qDebug() << a * b;
return (a*b);
}
};
#if 1
class MyThread : public QThread
{
Q_OBJECT
public:
MyThread();
public:
void run();
};
MyThread::MyThread()
{
qDebug()<<"Constructor called";
QWebView *view = new QWebView();
view->resize(400, 500);
view->page()->mainFrame()->addToJavaScriptWindowObject("myoperations", new MyJavaScriptOperations);
view->load(QUrl("./shreyas.html"));
view->show();
this->run();
}
void MyThread::run()
{
qDebug()<<"Thread running";
while(1)
{
qDebug()<<"Fire Callback now";
}
}
#endif
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MyThread t;
//t.run();
return a.exec();
}
나는 이것을 시도했지만 작동하지 않는다. 웹 페이지는 절대로로드되지 않습니다. a.exec은 실행할 기회가 없었습니다. –
알았어. 열쇠는 start()입니다. start()는 이벤트 루프에서 스레드를 푸시합니다. –
예. 어느 쪽이든, 내가 제공 한 링크의 예를 살펴보십시오. QThread의 사용 방법에 대한 일반적인 느낌을 주어야합니다. –