0

我一直在尝试向QMenuvia添加子菜单,QAction但它不起作用。正如您在下面看到的,我可以通过右键单击来查看选项QTableWidget。但是从菜单“选项”我应该看到子菜单,但我没有看到它。

菜单

下面的程序:

rostreewidget.h

    class ROSTreeWidget : public QTreeWidget
    {
        Q_OBJECT

    public:
        ROSTreeWidget(QWidget *parent = nullptr);
    signals:
        void selectFrom();
        void editLaserTable();

    private:
        QAction *mActionSELECT_FROM;
        QAction *mActionEditLaserTable;
        QAction *mAddMenu;

        QActionGroup *actions1, *actions2;

        QMenu *mMenu;
        QMenu *submenu;
        QAction *actionA_Setup;


    };

rostreewidget.cpp

// Namespace ROSLaserItemTree
ROSTreeWidget::ROSTreeWidget(QWidget *parent) : QTreeWidget(parent)
{
    mActionSELECT_FROM = new QAction(QIcon("/home/mapper/execute-command"), "SELECT * FROM", this);
    mActionEditLaserTable = new QAction(QIcon(":"), "Edit LaserScan Table");
    mAddMenu = new QAction(QIcon(":"), "Options", this);

    addActions({ mActionSELECT_FROM,
                 mActionEditLaserTable,
                 mAddMenu});

    connect(mActionSELECT_FROM, &QAction::triggered, [&]() {
        emit selectFrom();
    });

    connect(mActionEditLaserTable, &QAction::triggered, [&]() {
        emit editLaserTable();
    });

    connect(mAddMenu, &QAction::triggered, [&]() {
        mMenu = new QMenu();
        submenu = mMenu->addMenu( "A" );
        QAction* actionA_Setup = submenu->addAction( "Setup" );
    });
}

到目前为止我做了什么:

1)在关注这个来源之后,我能够准备菜单和要插入的子菜单,QAction但不幸的是它不起作用。正如您从打印屏幕中看到的那样,我无法看到“选项”下的选项。

2)我尝试的另一件事是通过这个其他来源,这也很清楚,但我仍然无法弄清楚为什么子菜单没有被添加到QAction.

感谢您指出解决此问题的正确方向。

4

0 回答 0