爲什麼新線程啓動該應用程序崩潰,請somybody指出我有我做enything錯了..應用程序崩潰開始
newthread.h
#ifndef NEWTHREAD_H
#define NEWTHREAD_H
#include <QThread>
class newthread: public QThread
{
public:
newthread();
public slots:
void run();
};
#endif // NEWTHREAD_H
newthread.cpp
#include "newthread.h"
#include "mainwindow.h"
#include<QDebug>
newthread::newthread()
{
}
void newthread::run(){
qDebug()<<"thread executed";
}
mainwindow.cpp
#include <QtGui>
#include "mainwindow.h"
#include"newthread.h"
MainWindow::MainWindow(QWidget *parent)
{
setupUi(this);
connect(pushButton,SIGNAL(clicked()),this, SLOT(opthread()));
}
void MainWindow::opthread(){
newthread th;
th.start();
}
這裏在主窗口中有一個名爲ophthread()的公共槽。如上圖所示,當主窗口中的按鈕被按下時,該槽將被觸發。在它中,我宣佈了一個名爲th和th.start()的新線程對象來啓動它。我做錯了什麼嗎?
這個編譯沒有錯誤。但是當運行二進制文件時它會給出錯誤並崩潰。
我的第二個問題是如果我需要線程在主窗口中的文本編輯上寫一些文本如何做到這一點。是否有可能在主窗口類中使用newthread類訪問對象。
您是否嘗試過調試該程序?大多數調試器可以告訴你崩潰發生的地方。 –
'run'應該是'private'(或者在某些情況下是''protected'),絕對不是'public slots'。並且不要繼承QThread!在大多數情況下它是無效的。而且你不能訪問主線程外的GUI元素,你需要使用信號槽信息系統將數據傳送到主線程。 –
deabugger它說,它崩潰的分段錯誤 –