未更新QLabel值



我想读取数据文件并使用QLabel打印数据的大小。我只能在读取数据之前调用setText,因此它返回0,并且在读取数据后不会更改。你能帮我在读取数据后如何更新Qlabel的值吗?

MainInterfaceWindow::MainInterfaceWindow(QWidget *parent) :
QMainWindow(parent), ui(new Ui::MainInterfaceWindow){
ui->label->setText(QString::number(ui->openGLWidget->m_size));
}
void Canvas::DoDataRelatedStuff{
...
m_size= dataSize.size();
}

添加一个信号到你的画布类

// Canvas.h
class Canvas : public /* base class */ {
// required in header
Q_OBJECT 
// ... other class stuff ...
signals:
void dataSizeChanged(int size);
}

在MainInterfaceWindow中,将该信号连接到更新文本的lambda函数:

MainInterfaceWindow::MainInterfaceWindow(QWidget *parent) :
QMainWindow(parent), ui(new Ui::MainInterfaceWindow){
ui->label->setText(QString::number(ui->openGLWidget->m_size));
connect(ui->openGLWidget, &Canvas::dataSizeChanged, ui->label, 
[](auto size){ ui->label->setText(QString::number(size)); });
}

最新更新