GUI上的文本显示

时间:2016-12-15 13:49:33

标签: qt text display scrollable

在我的Qt GUI应用程序中,有2个线程。

非GUI线程非常频繁地在串行端口上接收数据。这些数据需要显示在作为主线程的GUI上。滚动也需要实施。

我该如何实现?应该使用哪些Qt类?

1 个答案:

答案 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);
}