我正在尝试使用Qt内置的Qthread运行一个运行一系列GPIO引脚的线程。我已经确认引脚正在运行,问题在于实现Qthread。
这是头文件中的代码:
class Runtest : public QThread
{
public:
explicit Runtest(const QString& mark) : mark_(mark) {}
void run();
private:
QString mark_;
};
我的.cpp代码:
void Runtest::run()
{
wiringPiSetup(); //enable gpio library
pinMode(4, OUTPUT); //gpio pin 4 enabled
int x=0;
while(x<1000)
{
x++;
digitalWrite(4, HIGH); //gpio output high
delay(5);
digitalWrite(4, LOW); //gpio output low
delay(5);
}
}
我想从主函数
中调用该对象int main(int argc, char *argv[])
{
//setup_gpio();
QApplication a(argc, argv);
MainWindow w;
w.show();
Runtest go1;
go1.start();
return a.exec();
}
这不起作用,我收到的错误是no matching constructer for initialization of 'Runtest'
Runtest go1
行
我对面向对象编码不是很熟悉,我做错了什么?如何让Runtest::run()
运行?
答案 0 :(得分:0)
您已经声明了这样的构造函数:
explicit Runtest(const QString& mark) : mark_(mark) {}
期待QString
作为参数。但是你正在初始化你的对象:
Runtest go1;
您没有将QString
传递给构造函数。
你应该像这样初始化它:
Runtest go1("My string");