c++ - 自动更新 QLabel 文本

标签 c++ qt

我有一个带有简单 QLabel 的 Qt 应用程序。我想知道是否可以自动更新其文本,因为 QLabel 构造函数使用了引用。

QLabel ( const QString & text, QWidget * parent = 0, Qt::WindowFlags f = 0 )

我想要的是一个 QLabel,它的文本在我更改 QString 内容时更新。

我尝试了以下代码(使用 Qt 5.0.2):

#include <QtGui>
#include <QtWidgets>

int main(int argc, char **argv)
{
    QApplication app(argc, argv);

    QString str("test");
    QLabel label(str);
    label.setFixedSize(300,70);
    label.show();
    str = "yoh";
    label.repaint();

    return app.exec();
}

但标签仍然显示“测试”。那么,我是做错了什么,还是无法自动更新内容?

如有任何帮助,我们将不胜感激。顺便说一句,如果我必须继承 QLabel 也没有问题。

最佳答案

其实你可以做到。您需要创建模型。

QLabel label;
label.show();

QStandardItemModel *model = new QStandardItemModel(1,1);
QStandardItem *item1 = new QStandardItem(QStringLiteral("test"));
model->setItem(0, 0, item1);

使用 QDataWidgetMapper 添加 QLabel 和模型部分之间的映射.

QDataWidgetMapper *mapper = new QDataWidgetMapper();
mapper->setModel(model);
mapper->addMapping(&label,0,"text");
mapper->toFirst();

每次模型更改时,QLabel 都会使用模型中的数据进行更新。

model->setData(model->index(0,0),"yoh");

关于c++ - 自动更新 QLabel 文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28134214/

相关文章:

c++ - 无序 map 占用大量空间

c++ - QStringList 包含抛出错误

c++ - 计算两个 off64_t 数字之间的差异 C++

c++ - QLabel高亮搜索词

c++ - 如何将 Qt 组合框与按钮和某种显示图片的小部件连接起来?

c++ - 带有示例的休息床静态库

c++ - 将终端上的所有消息和警告打印到文件中?

c++ - 如何将基于 qt 的应用程序(在 Mac 上开发)部署到 Windows?

python - 无法让程序正确运行Python/Qt/PyQt

c++ - QAbstractSocket::UnknownSocketError