我是Qt的新手,我真的坚持使用线程。我知道这是多次回答的问题,但我无法弄清楚如何解决我的问题。我有几个标签的小部件应用程序,我有一个从串口读取数据的类。我需要不断读取数据并在标签中显示它们。我在Qt中找到了许多关于线程的不同答案,但我无法让它们中的任何一个工作。任何人都可以指出我正确的方向。
此代码大致显示了我想要实现的目标:
串口类:
SerialPort *port;
int value1;
int value2;
int value3;
void Port::ReadData()
{
// First I send data to serial port as a QByteArray
QByteArray data = port.readAll();
value1 = data[0];
value2 = data[1];
value3 = data[3];
// Of course it's not really like this but I process data and assign them to
variables
}
变量value1,value2和value3是公共的,我使用label1-> setText(portClass.value1)来显示数据。当我使用这个按钮点击ti工作,但我想关闭它循环并连续读取数据。
答案 0 :(得分:2)
标签有可以从任何线程using invokeMethod
调用的插槽:
QMetaObject::invokeMethod (label1, "setText",
Q_ARG(QString,data[0]);
QMetaObject::invokeMethod (label2, "setText",
Q_ARG(QString,data[1]);
QMetaObject::invokeMethod (label3, "setText",
Q_ARG(QString,data[2]);