Qt - открыть диалог, когда действие запускается несколько раз

Я хочу, чтобы диалоговое окно уведомлений появлялось, когда действие запускалось несколько раз подряд (так что в основном это похоже на то, как включены StickyKeys). Я понимаю что могу в принципе сделать connect(this->trigger, SIGNAL(triggered()), this, SLOT(onTrigger())) для обнаружения одного триггера, но как я могу обнаружить, когда это происходит 10 раз?

Благодарю.

PS - как я могу сделать "не показывать это сообщение снова" QCheckBox?

2 ответа

Вы можете реализовать свой слот следующим образом:

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

Вам понадобится внешний счетчик для этого в качестве метода подключения, или 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();
    }
}
Другие вопросы по тегам