【问题标题】:Suppress signals and emit it later抑制信号并稍后发出
【发布时间】:2014-07-02 17:53:54
【问题描述】:

我有一个对象,其状态由用户通过QDialog 控制。对话窗口中有很多QLineEdits、QRadioButtons 和其他内容。我在对象中创建了slots,并将它与来自小部件的signals 连接起来。一切正常,只要我按下小部件,对象的状态就会改变。现在我添加了okcancel 按钮,我希望仅在单击ok 按钮后更改对象状态,而不是在按下cancel 按钮时更改对象状态。那么,是否可以从小部件中捕获信号并在单击ok 按钮时发出它们,或者在单击cancel 按钮时抑制它们。我正在使用Qt 5.2.1

【问题讨论】:

  • 在小部件的插槽中,例如LineEdit 或 QRadiobutton 您必须临时存储状态。单击确定按钮后,您可以将数据写入持久存储或类似的东西。取消按钮丢弃所有临时数据。

标签: qt


【解决方案1】:

你不能轻易做到这一点。另外我认为在信号电平上解决这个问题是错误的方法。

您应该缓存这些值并将它们设置为您的对象 ok (而不是取消);或者您可以直接从小部件中读取值并以相同的方式将它们传递给您的对象,而无需缓存。

您是否正在构建设置对话框?

【讨论】:

  • 是的,它是多个绘图的设置对话框。创建对话框时,它会从图中读取参数并使用该值构建小部件。我不想从所有小部件中读取值并将它们应用于绘图,因为在这种情况下,所有绘图都将被重绘。我只想重绘那些参数已更改的图。
  • 然后将新值与绘图的当前值进行比较,并仅在更改时设置它们。如果可能的话,最好的办法是将该值更改检查构建到绘图设置器方法中。
猜你喜欢
  • 2015-03-07
  • 1970-01-01
  • 1970-01-01
  • 2012-11-01
  • 2016-08-30
  • 1970-01-01
  • 2018-10-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多