【问题标题】:How to automatically update a QLineEdit with the value of another variable如何使用另一个变量的值自动更新 QLineEdit
【发布时间】:2018-06-14 10:17:51
【问题描述】:

我有一个名为 str 的 std::string 对象;

我还有一个名为 line_edit 的 QLineEdit 对象。

我需要 str 反映用户在 line_edit 中写入的任何内容,我知道如何通过信号和槽进行操作。

但我还需要,每当 str 发生变化时,QLineEdit 会自动显示 str 的新内容。

我该怎么做?

我需要的是 MVC 吗?我一直在阅读它,但我还不能得到它。 此外,我读过的示例尝试保持 QWidget 的相互更新的子对象 这让我觉得那里发生了一些神奇的事情。

我怎样才能实现这种反应?

【问题讨论】:

  • 谁以及如何更改str 变量?
  • 当用户单击“运行”按钮时,“虚拟处理器”开始执行指令,一次一个,有一点延迟,因此用户可以看到发生了什么,因为处理器执行指令,它将向其寄存器写入新数据,我希望我的 QLineEdit 对象能够反映这些寄存器的状态,因此用户可以看到寄存器随着执行的进行如何变化,它们成为 QLineEdits 的原因是因为我希望用户也能够即时写入这些寄存器。
  • 您可能希望使用QDataWidgetMapper 将包含您的寄存器字符串的QStringListModel 映射到相同数量的QLineEdits。

标签: qt qtwidgets


【解决方案1】:

首先,使用 QString 代替 std::string 可能更容易。

你可以调用line_edit->setText(str);从您的代码中更新 line_edit。

写入QLineEdit时可以使用信号QLineEdit::textChanged修改str的内容。

有多种处理信号的方法,一种是使用 QObject::connect

它可能看起来像这样:QObject::connect(line_edit, &QLineEdit::textChanged, this, &YourClassName::setText);

然后你创建 setText(){ str = line_edit->text}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-23
    • 1970-01-01
    相关资源
    最近更新 更多