2014-07-01 28 views
1

我有一个对象,其状态由用户通过QDialog控制。在对话窗口中有很多QLineEdit s,QRadioButton s和其他东西。我在对象中创建了slots,并将它与小部件中的signals连接起来。 Everythig工作正常,只要我按下小部件,对象的状态就会改变。现在我已经添加了okcancel按钮,并且我希望仅在单击ok按钮后才能更改对象状态,而按下cancel按钮时不会更改它。那么,是否有可能从零件中捕获信号并在点击时点击ok按钮或点击时抑制它们。cancel按钮被点击。我正在使用Qt 5.2.1抑制信号并在稍后发出

+3

在窗口小部件的插槽中,例如LineEdit或QRadiobutton你必须暂时储存国家。点击确定按钮后,您可以将数据写入持久性存储或类似的东西。取消按钮丢弃所有临时数据。 – Matthias

回答

0

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

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

你在建立一个设置对话框吗?

+0

是的,它是一些情节的设置对话框。当创建对话框时,它从图中读取参数,并使用该值构造小部件。我不想读取所有小部件的值并将它们应用于绘图,因为在这种情况下,所有绘图都将重绘。我只想重绘那些参数已经改变的图。 – lnk

+0

然后将新值与图的当前值进行比较,并仅在更改后才设置它们。如果可能的话,最好的做法是将这个值更改检查集成到plot setter方法中。 – Silicomancer