Я пытаюсь использовать 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 go1
объектно-ориентированном кодировании, что я делаю неправильно? Как я могу Runtest::run()
?
Вы объявили свой конструктор следующим образом:
explicit Runtest(const QString& mark) : mark_(mark) {}
Ожидается, что QString
будет параметром. Но вы инициализируете свой объект следующим образом:
Runtest go1;
Вы не передаете конструктор QString
.
Вы должны инициализировать его примерно так:
Runtest go1("My string");
Writer
, но ваш класс называетсяRuntest
?delay(x)
наQCoreApplication::processEvents()
.