QT开发中文网

QMenu二级菜单

在 Qt 中,你可以使用 QMenu 创建二级菜单(子菜单)。以下是一个简单的示例,展示如何创建包含二级菜单的主菜单。

示例代码

#include <QApplication>
#include <QMainWindow>
#include <QMenuBar>
#include <QMenu>
#include <QAction>
#include <QMessageBox>

class MainWindow : public QMainWindow {
public:
    MainWindow() {
        // 创建菜单栏
        QMenuBar *menuBar = this->menuBar();

        // 创建“文件”菜单
        QMenu *fileMenu = menuBar->addMenu("文件");

        // 添加一级操作
        QAction *newAction = fileMenu->addAction("新建");
        QAction *openAction = fileMenu->addAction("打开");

        // 创建“编辑”菜单
        QMenu *editMenu = menuBar->addMenu("编辑");

        // 添加一级操作
        QAction *copyAction = editMenu->addAction("复制");
        
        // 创建“粘贴”子菜单并添加到“编辑”菜单中
        QMenu *pasteSubmenu = new QMenu("粘贴选项", this);
        
        QAction *pastePlainTextAction = pasteSubmenu->addAction("粘贴为纯文本");
        QAction *pasteRichTextAction = pasteSubmenu->addAction("粘贴为富文本");

        editMenu->addMenu(pasteSubmenu);  // 将子菜单添加到“编辑”菜单

        // 连接信号和槽以响应动作点击
        connect(newAction, &QAction::triggered, this, []() {
            QMessageBox::information(nullptr, "信息", "新建文件被选择!");
        });

        connect(openAction, &QAction::triggered, this, []() {
            QMessageBox::information(nullptr, "信息", "打开文件被选择!");
        });

        connect(copyAction, &QAction::triggered, this, []() {
            QMessageBox::information(nullptr, "信息", "复制被选择!");
        });
        
         connect(pastePlainTextAction, &QAction::triggered, this, []() {
            QMessageBox::information(nullptr, "信息", "粘贴为纯文本被选择!");
         });
         
         connect(pasteRichTextAction, &QAction::triggered, this, []() {
            QMessageBox::information(nullptr, "信息", "粘贴为富文本被选择!");
         });
    }
};

int main(int argc, char *argv[]) {
    QApplication app(argc, argv);
    
    MainWindow window;
    window.resize(400, 300);
    window.setWindowTitle("带有二级菜单的示例");
    window.show();
    
    return app.exec();
}

代码解释

  1. 创建主窗口: 使用 QMainWindow 来创建一个主窗口。
  2. 添加菜单栏: 使用 this->menuBar() 获取窗口的菜单栏。
  3. 创建第一级菜单:
    • "文件""编辑" 是两个顶级菜单。
    • 每个顶级菜单使用 addMenu() 方法进行添加。
  4. 添加操作:
    • 使用 addAction() 向每个顶级菜单添加单独的操作,如 "新建""打开""复制"
  5. 创建二级子菜单:
    • "编辑" 菜单中,首先创建一个新的 QMenu 实例作为子菜,并使用 editMenu->addMenu(pasteSubmenu) 将其添加到父菜中。然后向此子菜中添加了两个选项:"粘贴为纯文本""粘贴为富文本"
  6. 信号与槽连接:
    • 为各个动作连接相应的槽,以便在用户点击这些动作时显示对应的信息框。

运行上述代码后,你将看到一个带有二级(子)菜单位于“编辑”中的示例应用程序。


内容由零声教学AI助手提供,问题来源于学员提问

目录导航
  • 示例代码
  • 代码解释
  • 本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
    转载请注明出处:https://qt.0voice.com/?id=12773

    分享:
    扫描分享到社交APP
    上一篇
    下一篇
    发表列表
    游客 游客
    此处应有掌声~
    评论列表

    还没有评论,快来说点什么吧~

    联系我们

    在线咨询: 点击这里给我发消息

    微信号:3007537140

    上班时间: 10:30-22:30

    关注我们
    x

    注册

    已经有帐号?