2014-05-05 5 views
0

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

Спасибо.

P.S - как я могу сделать «не показывать это сообщение еще раз» QCheckBox?

ответ

2

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

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

Я думаю, что вам не хватает типа возврата из подписи. – lpapp

+0

Сбросьте счетчик. – user2672165

+0

@ user2672165, я не вижу необходимости показывать диалог на ** каждый ** 10 кликов или около того. – vahancho

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