ImageToggleButton,我可以检查" onCheckedChanged"是由用户还是以编程方式调用?

时间:2014-05-28 09:20:48

标签: qt qml blackberry-10

我在QML中有ImageToggleButton。 并且我使用onCheckedChanged来检查用户更改按钮状态的时间。有时我需要改变" Checked"以编程方式从QT开始,但我不想在这种情况下调用onCheckedChanged。 很遗憾,ImageToggleButton并未包含方法onClicked

是否有任何解决方案可以检查用户是否调用了onCheckedChanged?或者可能是另一种解决方案。

我知道我可以使用ImageButton并从QT更改图像,但也许有正确的方法。

1 个答案:

答案 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