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();
}
}