不更新 QLabel 值
Not updating QLabel value
我想读取数据文件并使用 QLabel 打印数据的大小。我只能在读取数据之前调用 setText,所以它 returns 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 添加信号 class
// 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)); });
}
我想读取数据文件并使用 QLabel 打印数据的大小。我只能在读取数据之前调用 setText,所以它 returns 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 添加信号 class
// 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)); });
}