0

当一个动作连续多次触发时,我希望出现一个通知对话框(所以基本上有点像启用 StickyKeys 的方式)。我知道我基本上可以connect(this->trigger, SIGNAL(triggered()), this, SLOT(onTrigger()))检测单个触发器,但是我如何检测它何时发生 10 次?

谢谢。

PS - 我怎么能做一个“不再显示这个消息”QCheckBox?

4

2 回答 2

2

You can implement your slot in the following way:

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

您需要一个外部计数器作为连接方法,否则 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 回答