Указатель на функции слотов в addAction

В общем, делаю меню. у каждого пункта есть слот действие на событие выбора. Наименование пункта меню и указатель на слот собран в векторе. ошибка возникает в addAction, когда я пытаюсь ассоциироваться с определённым слотом.

VectorDraw.hpp:

#pragma once
#include "VectorDraw_pch.hpp"
#include <QMenuBar>

class MainWindow : public QMainWindow {
    Q_OBJECT
    QMainWindow *   m_main_window;
    typedef void (MainWindow::*funcactionType)();
    struct itemsMenuType {QString itemsText; funcactionType action ;};
public slots:
    void actOpen() {qDebug()<<"Open";}
    void actSave() {qDebug()<<"Save";}
    void actSaveAs() {qDebug()<<"SaveAs";}
    void actExit() {qDebug()<<"Exit";}
public: 
    QVector<itemsMenuType> items = {
        {"Открыть",      &MainWindow::actOpen},
        {"Сохранить",    &MainWindow::actSave},
        {"Сохранить как",&MainWindow::actSaveAs},
        {"Выход",    &MainWindow::actExit}
    };
    MainWindow( QWidget * p_parent = nullptr, int argc=0, char * argv[] = nullptr )
        : QMainWindow( p_parent ), m_main_window(this){
            auto addRootItemMenu { [=](QString menuText, QMenuBar * MB, QVector<itemsMenuType> items ){
                QMenu * menuL0 = new QMenu(menuText);
                for (auto i : items){
                menuL0->addAction(i.itemsText, this, (this->*(i.action))());    
                MB->addMenu(menuL0);
                }
            } 
        };
        QMenuBar * mainMenu = new QMenuBar;
        addRootItemMenu ("Файл", mainMenu, items);
        m_main_window->setMenuBar(mainMenu);                
    }
}; // class MainWindow

VectorDraw.cpp:

#include "VectorDraw.hpp"
int main( int argc, char * argv[] ) {   
    QApplication app( argc, argv );
    MainWindow w(nullptr, argc, argv);
    w.show();
    return app.exec();
}

то есть почему-то вот так работает:

menuL0->addAction(i.itemsText, this, &MainWindow::actOpen);

а когда я хочу выбрать из вектора, то это не работает:

menuL0->addAction(i.itemsText, this, (this->*(i.action))());

Ответы (0 шт):