Невозможно связать QAction с функцией при запуске (Qt 5) - PullRequest
0 голосов
/ 21 октября 2018

Я пытаюсь добавить контекстное меню в системный трей (активируется нажатием на значок в системном трее). Я успешно добавил меню и действие с текстом «Выход», однако я не знаю, как связать действия«сработавшая» функция на другую функцию / изменить сработавшую функцию или что-либо еще, что будет работать.Я просто хочу активировать определенное поведение, когда нажимаю на действие.Эта кнопка действия ничего не делает, когда я нажимаю на нее.Я попытался связать его с функцией-членом с помощью этого конструктора: 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);
    }

1 Ответ

0 голосов
/ 21 октября 2018

addAction возвращает указатель на объект QAction, получает этот указатель и использует connect для установления связи между сигналом triggered и on_actionQuit_triggered слотом:

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