Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt-动作多次触发时打开对话框_Qt_Qt Signals_Qaction - Fatal编程技术网

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

Qt-动作多次触发时打开对话框,qt,qt-signals,qaction,Qt,Qt Signals,Qaction,我希望在连续多次触发某个动作时出现一个通知对话框(基本上有点像启用粘滞键)。我知道我基本上可以用connect(这个->触发器,信号(trigger()),这个,SLOT(onTrigger())来检测单个触发器,但是我怎么能检测它发生10次呢 谢谢 附注-我如何才能执行“不再显示此消息”QCheckBox?您可以通过以下方式实现插槽: void MyClass::onTrigger() { static int count = 0; if (count++ == 10) {

我希望在连续多次触发某个动作时出现一个通知对话框(基本上有点像启用粘滞键)。我知道我基本上可以用
connect(这个->触发器,信号(trigger()),这个,SLOT(onTrigger())
来检测单个触发器,但是我怎么能检测它发生10次呢

谢谢


附注-我如何才能执行“不再显示此消息”QCheckBox?

您可以通过以下方式实现插槽:

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

我认为您缺少签名中的返回类型。请重置计数器。@user2672165,我看不出每单击10次左右就显示对话框的要求。我会小心在类方法中使用静态变量。它们在该类的所有实例中共享。