我在QML中有ImageToggleButton
。
并且我使用onCheckedChanged
来检查用户更改按钮状态的时间。有时我需要改变" Checked"以编程方式从QT开始,但我不想在这种情况下调用onCheckedChanged
。
很遗憾,ImageToggleButton
并未包含方法onClicked
。
是否有任何解决方案可以检查用户是否调用了onCheckedChanged
?或者可能是另一种解决方案。
我知道我可以使用ImageButton
并从QT更改图像,但也许有正确的方法。
答案 0 :(得分:1)
根据@Predelnik的要求 - RAII实施。
struct Blocker( QObject *obj )
{
QPointer< QObject > obj;
bool wasBlocked;
Blocker( QObject *_obj )
: obj( _obj )
{
Q_ASSERT( obj );
wasBlocked = obj->blockSignals( true );
}
~Blocker()
{
if ( obj )
obj->blockSignals( wasBlocked );
}
};
{
// ...usage
Blocker block( imageButton ); // will unblock signals automatically
// do work
}// auto unblock there