Qt - 多次触发动作时打开对话框

时间:2014-05-05 08:05:27

标签: qt qt-signals qaction

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

感谢。

P.S - 我怎么能再做一次"不再显示这条消息" QCheckBox?

2 个答案:

答案 0 :(得分:2)

您可以通过以下方式实现广告位:

void MyClass::onTrigger()
{
    static int count = 0;
    if (count++ == 10) {
        // show the dialog here
    }
}

答案 1 :(得分: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();
    }
}