Sie müssen ein Signal vom Thread senden, der die QString-Variable enthält, und einen Slot im Widget mit der Bezeichnung erstellen, um diese Daten zu erhalten.
Dokumentation: http://doc.qt.io/qt-5.7/signalsandslots.html
Hier können Sie für Ihre Bedürfnisse ein Grund Prototyp haben:
In Ihrem customthread.h
signals:
portRead(QString text);
In Ihrem customthread.cpp
void process() //Your process function
{
QString text = readFromSerialPort(); // Your function that reads the SP
emit portRead(text)
}
In Ihr Hauptfenster.h
slots:
void setLabelText(QString text);
In Ihrem 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);
}
Sie benötigen mehr Informationen zu Ihrem Code hinzuzufügen, warum genau für Ihre serielle Schnittstelle einen separaten Thread mit? In der Regel sollte das Aktualisieren der GUI nur vom Hauptthread aus erfolgen. Sie können möglicherweise zu einem Entwurf mit einem einzelnen Thread wechseln oder Cross-Thread-Signale verwenden, um die GUI zu aktualisieren. Vielleicht möchten Sie sich das [Qt Terminal Example] (https://doc.qt.io/qt-5/qtserialport-terminal-example.html) ansehen. – Mike