我一直在尝试向QMenu
via添加子菜单,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
.
感谢您指出解决此问题的正确方向。