【发布时间】:2015-08-03 21:15:39
【问题描述】:
我需要知道我做错了什么。
我尝试对此进行研究,但我真的找不到任何与我的案例相关的内容。我是 QT 新手,调试信号和插槽对我来说有点技术性。
我想做的很简单:创建一个线程,不断向我的QProgressBar 小部件发送信号。
这是我的基本代码 sn-ps:
thread.h
class MyThread : public QThread
{
public:
MyThread(QWidget * parent = 0);
signals:
void valueChanged(int value);
protected:
void run();
};
mainwindow.cpp
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
MyThread * test = new MyThread(this);
connect(test,SIGNAL(valueChanged(int)),ui->progressBar,SLOT(setValue(int)));
test->start();
}
thread.cpp
MyThread::MyThread(QWidget * parent)
{
}
void MyThread::run(){
emit valueChanged(10); //for simplicity
}
void MyThread::valueChanged(int value){
}
我的 UI 上只有一个 progressBar,而我的 main 与默认值相同。
无论如何,在运行代码时。我不断地从我的线程类中得到这个no such signal。我可以知道我做错了什么吗?我还想澄清一下我对signals and slots的理解是否正确:这意味着每次调用signal时都会触发slot。
【问题讨论】:
标签: c++ multithreading qt