Qt ImageToggleButton,是否可以检查;一旦选中“更改”;是由用户调用的还是通过编程调用的?
我在QML中有Qt ImageToggleButton,是否可以检查;一旦选中“更改”;是由用户调用的还是通过编程调用的?,qt,qml,blackberry-10,Qt,Qml,Blackberry 10,我在QML中有ImageToggleButton。 我使用onCheckedChanged检查用户何时更改按钮状态。有时我需要从QT以编程方式更改“Checked”状态,但我不希望在本例中调用onCheckedChanged。 不幸的是,ImageToggleButton不包含单击的方法 是否有任何解决方案来检查用户是否调用了onCheckedChanged?或者其他解决方案 我知道我可以使用ImageButton从QT更改图像,但可能有一种正确的方法。根据@Predelnik-RAII实现的要
ImageToggleButton
。
我使用onCheckedChanged
检查用户何时更改按钮状态。有时我需要从QT以编程方式更改“Checked”状态,但我不希望在本例中调用onCheckedChanged
。
不幸的是,ImageToggleButton
不包含单击的方法
是否有任何解决方案来检查用户是否调用了onCheckedChanged
?或者其他解决方案
我知道我可以使用
ImageButton
从QT更改图像,但可能有一种正确的方法。根据@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
结构拦截器(QObject*obj)
{
QPointer您可以在以编程方式更改chechinh状态之前断开插槽,然后恢复连接。是的,@DmitrySazonov提出的方法似乎是实现这一点的唯一方法。我还建议您创建用于临时断开插槽的RAII类。