【问题标题】:Unable to link QAction to a function when triggered (Qt 5)触发时无法将 QAction 链接到函数(Qt 5)
【发布时间】:2018-10-21 08:16:24
【问题描述】:

我正在尝试将上下文菜单添加到系统托盘(可通过单击系统托盘图标激活)我已成功添加菜单和带有文本“退出”的操作,但是我不知道如何链接这些操作“触发”功能到另一个功能/更改触发功能或其他任何可行的方法。我只是想在单击操作时激活某些特定行为。当我单击此操作按钮时,它不执行任何操作。我尝试使用此构造函数将其链接到成员函数:QAction *QMenu::addAction(const QIcon &icon, const QString &text, const QObject *receiver, PointerToMemberFunction method, const QKeySequence &shortcut = ...) 这是我的代码中最重要的部分:

     MainWindow::MainWindow(QWidget *parent) :
        QMainWindow(parent),
        ui(new Ui::MainWindow)
    {
        ui->setupUi(this);
        mSystemTrayIcon = new QSystemTrayIcon(this);
        mSystemTrayIcon->setIcon(QIcon(":/iris_logo.png"));
        mSystemTrayIcon->setVisible(true);

        systemTrayMenu = new QMenu("Context menu");
        systemTrayMenu->setToolTipsVisible(true);
 // I get the error: no matching member function for call to 'addAction'
        systemTrayMenu->addAction("Open", this, on_actionQuit_triggered())); 

// I dont get an error, however this only creates a menu button, not its corresponding function that must be called.
        systemTrayMenu->addAction("Exit"); 
        mSystemTrayIcon->setContextMenu(systemTrayMenu);
    }

【问题讨论】:

    标签: c++ qt5 qaction


    【解决方案1】:

    addAction返回一个指向QAction对象的指针,获取该指针并使用connecttriggered信号与on_actionQuit_triggered槽连接起来:

    QAction* openAction = systemTrayMenu->addAction("Open"); 
    connect (openAction, SIGNAL(triggered()) , this, SLOT(on_actionQuit_triggered()));
    

    【讨论】:

      猜你喜欢
      • 2017-11-01
      • 1970-01-01
      • 2015-11-24
      • 1970-01-01
      • 1970-01-01
      • 2023-03-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多