谁帮我看看我的QT代码,槽总是接收不到信号,我写个简单的都不行。麻烦大神帮忙,痛苦我一天了
先看main.cpp文件:就是定义一个线程intmain(intargc,char*argv[]){QApplicationa(argc,argv);MainWindow...
先看main.cpp文件: 就是定义一个线程
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
/*定义一个线程,并且启动一个线程*/
MyThread receive_data;
receive_data.start();
return a.exec();
}
然后在mainwindow.h 文件中,定义了该线程的类,同时在mainwindow类中定义了一个槽函数,在mythread中定义了一个信号
class MainWindow : public QMainWindow {
Q_OBJECT
public:
MainWindow(QWidget *parent = 0);
~MainWindow();
protected:
void changeEvent(QEvent *e);
private:
Ui::MainWindow *ui;
public slots:
void print(); //我的槽函数
private slots:
void on_pushButton_clicked();
};
/*创建一个线程类*/
class MyThread : public QThread
{
Q_OBJECT
public:
virtual void run();
signals:
void UpdateSignal(); //我定义的类
};
然后再mainwindow.h中实现了槽函数,并在线程中循环发送信号:
/*一个线程的主函数*/
void MyThread::run()
{
while(1)
{
//开启一个死循环,每隔一秒就发送一个信号
qDebug("hello");
Sleep(1000);
emit UpdateSignal();
}
}
void MainWindow::print()
{
ui->label->setText("hello"); //槽函数的实现,就是不执行
}
结果:编译也没有问题,但是槽函数就是不执行,到底是什么原因?
对了,在mainwindow的构造函数中,进行了连接
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
MyThread thread_1;
connect(&thread_1, SIGNAL(UpdateSignal()),
this, SLOT(print()));
}
这是我全部的代码,就是不行 展开
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
/*定义一个线程,并且启动一个线程*/
MyThread receive_data;
receive_data.start();
return a.exec();
}
然后在mainwindow.h 文件中,定义了该线程的类,同时在mainwindow类中定义了一个槽函数,在mythread中定义了一个信号
class MainWindow : public QMainWindow {
Q_OBJECT
public:
MainWindow(QWidget *parent = 0);
~MainWindow();
protected:
void changeEvent(QEvent *e);
private:
Ui::MainWindow *ui;
public slots:
void print(); //我的槽函数
private slots:
void on_pushButton_clicked();
};
/*创建一个线程类*/
class MyThread : public QThread
{
Q_OBJECT
public:
virtual void run();
signals:
void UpdateSignal(); //我定义的类
};
然后再mainwindow.h中实现了槽函数,并在线程中循环发送信号:
/*一个线程的主函数*/
void MyThread::run()
{
while(1)
{
//开启一个死循环,每隔一秒就发送一个信号
qDebug("hello");
Sleep(1000);
emit UpdateSignal();
}
}
void MainWindow::print()
{
ui->label->setText("hello"); //槽函数的实现,就是不执行
}
结果:编译也没有问题,但是槽函数就是不执行,到底是什么原因?
对了,在mainwindow的构造函数中,进行了连接
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
MyThread thread_1;
connect(&thread_1, SIGNAL(UpdateSignal()),
this, SLOT(print()));
}
这是我全部的代码,就是不行 展开
1个回答
展开全部
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();//窗口没有销毁,会在这阻塞,线程对象没有创建出来,自然接收不到信号。
/*定义一个线程,并且启动一个线程*/
MyThread receive_data;
receive_data.start();
return a.exec();
}
{
QApplication a(argc, argv);
MainWindow w;
w.show();//窗口没有销毁,会在这阻塞,线程对象没有创建出来,自然接收不到信号。
/*定义一个线程,并且启动一个线程*/
MyThread receive_data;
receive_data.start();
return a.exec();
}
更多追问追答
追问
额,那我该怎么解决啊,亲,放在前面也不行啊
那我该怎么解决哇,我放到前面?好像也不行啊
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询