当一个动作连续多次触发时,我希望出现一个通知对话框(所以基本上有点像启用 StickyKeys 的方式)。我知道我基本上可以connect(this->trigger, SIGNAL(triggered()), this, SLOT(onTrigger()))
检测单个触发器,但是我如何检测它何时发生 10 次?
谢谢。
PS - 我怎么能做一个“不再显示这个消息”QCheckBox?
当一个动作连续多次触发时,我希望出现一个通知对话框(所以基本上有点像启用 StickyKeys 的方式)。我知道我基本上可以connect(this->trigger, SIGNAL(triggered()), this, SLOT(onTrigger()))
检测单个触发器,但是我如何检测它何时发生 10 次?
谢谢。
PS - 我怎么能做一个“不再显示这个消息”QCheckBox?
You can implement your slot in the following way:
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();
}
}