Qt 学习第八天:菜单栏、工具栏、状态栏、模态和非模态对话框创建

首先先创建QMainwindow文件

以下代码全在MainWindow.cpp下

1. 创建菜单栏

cpp 复制代码
    //创建菜单栏
    QMenuBar *menu = menuBar();
    //创建菜单
    QMenu *fileMenu = menu->addMenu("文件");
    QMenu *editMenu = menu->addMenu("编辑");
    //创建文件中菜单项
    QAction *createPro = fileMenu->addAction("新建项目");
    fileMenu->addSeparator(); //加分割线
    QAction *openPro = fileMenu->addAction("打开项目");

2. 创建工具栏

cpp 复制代码
    //工具栏
    QToolBar *toolbar = new QToolBar(this);
    //工具栏靠左侧
    addToolBar(Qt::LeftToolBarArea, toolbar);
    //添加快捷键
    toolbar->addAction(createPro);
    toolbar->addAction(openPro);

3. 创建状态栏

cpp 复制代码
    //状态栏创建
    QStatusBar *statusBar = new QStatusBar(this);
    setStatusBar(statusBar);
    //放标签
    QLabel *label = new QLabel("状态栏");
    //标签放入状态栏左侧
    statusBar->addWidget(label);
    QLabel *label2 = new QLabel("右侧状态栏");
    //标签放入状态栏右侧
    statusBar->addPermanentWidget(label2);

【运行结果】

4. 模态和非模态对话框创建

模态对话框:

cpp 复制代码
    //点击新建按钮弹出对话框
    connect(createPro, &QAction::triggered, this, [=]{
        //创建模态对话框:弹出该对话框后,若不关闭则不能对其它窗口进行操作。
        QDialog dialog1(this);
        dialog1.setWindowTitle("模态对话框");
        dialog1.resize(this->size()); //生成的对话框和窗口一样大
        dialog1.exec(); //阻塞
        qDebug() << "创建模态对话框" << Qt::endl;
    });

【运行结果】

非模态对话框

cpp 复制代码
    connect(createPro, &QAction::triggered, this, [=]{
        //创建非模态对话框:在不关闭该对话框的情况下可以对其它窗口进行操作。
        QDialog *dialog2 = new QDialog(this);
        dialog2->setWindowTitle("非模态对话框");
        dialog2->resize(this->size()); //生成的对话框和窗口一样大
        dialog2->show(); //show函数
        dialog2->setAttribute(Qt::WA_DeleteOnClose);
        qDebug() << "创建非模态对话框" << Qt::endl;
    });

【运行结果】

补充知识点:

英语部分后面补吧

相关推荐
im_AMBER13 分钟前
Leetcode 85 【滑动窗口(不定长)】最多 K 个重复元素的最长子数组
c++·笔记·学习·算法·leetcode·哈希算法
nwsuaf_huasir18 分钟前
overleaf在线编译latex怎办编译中文
学习
leiming625 分钟前
c++ string 容器
开发语言·c++·算法
wdfk_prog29 分钟前
[Linux]学习笔记系列 -- [fs]filesystems
linux·笔记·学习
jackaso38 分钟前
react学习笔记
笔记·学习·react.js
像名字一样难取的昵称43 分钟前
Linux学习笔记:十八、Linux文件的压缩,解压缩一站式学习
linux·运维·笔记·学习·ubuntu·ssh
雍凉明月夜1 小时前
深度学习网络笔记Ⅰ(CNN)
网络·笔记·深度学习·神经网络·学习·cnn
superman超哥1 小时前
仓颉Option类型的空安全处理深度解析
c语言·开发语言·c++·python·仓颉
你好音视频1 小时前
FFmpeg FLV解码器原理深度解析
c++·ffmpeg·音视频
报错小能手1 小时前
C++ STL bitset 位图
开发语言·c++