Qt QThread线程调用

时间:2014-03-23 04:18:21

标签: c++ qt oop qthread

我正在尝试使用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()运行?

1 个答案:

答案 0 :(得分:0)

您已经声明了这样的构造函数:

explicit Runtest(const QString& mark) : mark_(mark) {}

期待QString作为参数。但是你正在初始化你的对象:

Runtest go1;

您没有将QString传递给构造函数。

你应该像这样初始化它:

Runtest go1("My string");