0

アクションが複数回連続してトリガーされたときに通知ダイアログが表示されるようにします (基本的には、StickyKeys を有効にする方法に少し似ています)。基本的にはconnect(this->trigger, SIGNAL(triggered()), this, SLOT(onTrigger()))1 回のトリガーを検出できることは理解していますが、それが 10 回発生したことを検出するにはどうすればよいでしょうか。

ありがとう。

PS - 「今後このメッセージを表示しない」QCheckBox を実行するにはどうすればよいですか?

4

2 に答える 2

2

次の方法でスロットを実装できます。

void MyClass::onTrigger()
{
    static int count = 0;
    if (count++ == 10) {
        // show the dialog here
    }
}
于 2014-05-05T08:07:59.207 に答える
0

これには connect メソッドとして外部カウンターが必要です。そうしないと、QObject はすぐに使用できません。私はこれを書きます:

MyClass::MyClass(QObject *parent) : QObject(parent), m_cnt(0)
{
    ...
    // Removed the needless this usage
    connect(trigger, SIGNAL(triggered()), SLOT(onTrigger()));
    ...
}

void MyClass::onTrigger()
{
    if (m_cnt++ == 10) {
        m_dialog.show();
        // or: m_dialog.exec();
    }
}
于 2014-05-05T08:08:13.947 に答える