在我的Qt GUI应用程序中,有2个线程。
非GUI线程非常频繁地在串行端口上接收数据。这些数据需要显示在作为主线程的GUI上。滚动也需要实施。
我该如何实现?应该使用哪些Qt类?
答案 0 :(得分:0)
您需要从包含QString变量的线程发送信号,并在Widget中创建一个包含接收该数据的标签的插槽。
文档:http://doc.qt.io/qt-5.7/signalsandslots.html
这里有一个满足您需求的基本原型:
在customthread.h中
signals:
portRead(QString text);
在customthread.cpp中
void process() //Your process function
{
QString text = readFromSerialPort(); // Your function that reads the SP
emit portRead(text)
}
在你的mainwindow.h中
slots:
void setLabelText(QString text);
在你的mainwindow.cpp
中Widget::Widget(QWidget *parent)
{
CustomThread *thread = new CustomThread();
//Some code
connect(thread,SIGNAL(portRead(QString)),this,SLOT(setLabelText(QString)));
}
void setLabelText(QString text)
{
this->label->setText(text);
}