【问题标题】:How did I retrieve changes in the content of all text edit boxs in a widget我如何检索小部件中所有文本编辑框内容的更改
【发布时间】:2021-01-21 11:35:36
【问题描述】:

现在,我有一个用于配置一些参数的小部件,有一些带有默认值的 QlineEdit 和这个小部件上的 save 按钮。人们可能会更改QlineEdit 的内容。并点击save按钮,使修改后的参数生效。这是我的问题:

如何检索QWidget中所有文本行编辑内容的变化?

一旦知道哪些编辑内容发生了变化,就可以判断修改后的值是否合法,然后让修改生效。

谁能给我一些想法?

  • 操作系统:Windows10
  • QT:qt 5.9.0

【问题讨论】:

    标签: qt


    【解决方案1】:

    对于这种情况,最好在手动验证用户输入之前再执行一步。该步骤是限制用户输入无效设置。如果您的设置值是一个数字,请使用QSpinBoxQDoubleSpinBox 作为浮点值。如果您想让用户从多个预定义值中进行选择,例如性别(男性,女性),请使用 QComboBoxQRadioButton 等等。这是Qt's widgets 的列表。所以请记住,对所有输入都使用 QLineEdit 并不是一个好主意。

    如果您的输入更复杂,您可以使用验证器。要了解这个想法,请参阅question

    最后,使用 Qt 的 signals and slots 机制将保存按钮的 clicked 信号连接到小部件类中定义的插槽,并从所有输入中获取值并检查它们,如果一切正常,将它们应用到你的系统。

    【讨论】:

    • 感谢您的回答!我还有一个问题是我如何知道textBoxQcomboBox 的内容发生了变化,而无需将控件的内容与之前的值进行比较。你知道如果设置参数没有改变,我不需要再次应用这些设置。不过我的配置项很多,一一判断好像有点太复杂了。
    • @gavin_free QComboBox 几乎没有信号让您知道它已经改变。请参阅文档。不需要比较。如果你想给我发邮件...
    猜你喜欢
    • 2019-11-05
    • 1970-01-01
    • 1970-01-01
    • 2010-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多