Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
qt/pyqt如何使spinbox信号仅用于用户操作/事件?_Qt_Pyqt_Pyqt4 - Fatal编程技术网

qt/pyqt如何使spinbox信号仅用于用户操作/事件?

qt/pyqt如何使spinbox信号仅用于用户操作/事件?,qt,pyqt,pyqt4,Qt,Pyqt,Pyqt4,我只需要对用户操作做出反应(生成事件),但程序也必须能够更改值,但不需要事件 如果我使用comboBox,是否有为此原因激活的信号(int)。如何为spinbox执行此操作?spinbox没有激活,因为唯一的激活是单击按钮,该按钮会发送更改信号 您始终可以使用spinbox->setValue(value)设置spinbox的值 编辑:要设置spinbox而不使其发出信号吗? 最好的方法是设置器临时禁用来自控件的信号,因为spinbox没有激活,因为唯一的激活是单击按钮,该按钮发送更改信号 您始

我只需要对用户操作做出反应(生成事件),但程序也必须能够更改值,但不需要事件


如果我使用comboBox,是否有为此原因激活的信号(int)。如何为spinbox执行此操作?

spinbox没有激活,因为唯一的激活是单击按钮,该按钮会发送更改信号

您始终可以使用
spinbox->setValue(value)
设置spinbox的值

编辑:要设置spinbox而不使其发出信号吗?

最好的方法是设置器临时禁用来自控件的信号,因为spinbox没有激活,因为唯一的激活是单击按钮,该按钮发送更改信号

您始终可以使用
spinbox->setValue(value)
设置spinbox的值

编辑:要设置spinbox而不使其发出信号吗?

最好的方法是设置程序使用

spinbox->setValue(value)
暂时禁用控件发出的信号,这将导致
emit valueChanged(value)
这是海报想要避免的行为。@tmpearce-好的,我已经更改了答案-如果这是OP的意思,我将编辑问题标题eah,
blockSignals()
是我能想到的唯一方法,但它并不漂亮-它会给每个调用方带来负担,而不是在小部件中设置属性,例如。@t Pearce-您可以派生一个新的spin控件,或者使用一个setSilent()函数将ptr带到控件中-但是是的,这很糟糕。但不像MFC那么糟糕,在MFC中,您需要许多额外的标志变量来停止递归设置/更新calls@MartinBeckett:实际上,我不明白为什么按照你的建议去做并为你自己的spinbox子类化,创建一个阻止和取消阻止信号的
setValueSilent()
方法是如此“糟糕”。对我来说似乎很干净。
spinbox->setValue(value)
将导致
emit valueChanged(value)
这是海报想要避免的行为。@tPearce-好的,我已经更改了答案-如果这是OP的意思,我将编辑问题标题eah,
blockSignals()
是我能想到的唯一方法,但它并不漂亮-它会给每个调用方带来负担,而不是在小部件中设置属性,例如。@tPearce-您总是可以派生一个新的spin控件,或者使用一个setSilent()函数将ptr带到该控件上-但是是的,这是不好的。但不像MFC那么糟糕,在MFC中,您需要许多额外的标志变量来停止递归设置/更新calls@MartinBeckett:实际上,我不明白为什么按照你的建议去做并为你自己的spinbox子类化,创建一个阻止和取消阻止信号的
setValueSilent()
方法是如此“糟糕”。我觉得很干净。