QT之建立一个基本的菜单窗口

#include "mainwindow.h"
#include<QPushButton>
#include<QDebug>
#include<QMenuBar>
#include<QMenu>
#include<QAction>
#include<QToolBar>
#include<QStatusBar>
#include<QLabel>
#include<QTextEdit>
#include<QDockWidget>
#include<QDialog>
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    //菜单栏
    QMenuBar *mBar = menuBar();

    //添加菜单
    QMenu *pFile = mBar->addMenu("文件");

    //添加菜单项,添加动作
    QAction * pNew = pFile->addAction("新建");

    connect(pNew,&QAction::triggered,
            [=]()
    {
    qDebug()<<"新建";
    }

            );
    pFile->addSeparator();
    QAction *pOpen = pFile->addAction("打开");

    //工具栏  菜单栏的快捷方式
    QToolBar * toolBar = addToolBar("toolBar");

    //工具栏添加快捷键
    toolBar->addAction(pNew);
    QPushButton *a = new QPushButton(this);
    a->setText("^_^");
    toolBar->addWidget(a);
    connect(a,&QPushButton::clicked,
            [=]()
            {
            a->setText("123");
            }

            );
    //状态栏
    QStatusBar * sBar = statusBar();
    QLabel *label = new QLabel(this);
    label->setText("Normal text file");
    sBar->addWidget(label);
    //addWidget从左往右添加
    sBar->addWidget(new QLabel("11",this));

    //从右往左添加
    sBar->addPermanentWidget(new QLabel("22",this));

    //核心控件
    QTextEdit * textEdit = new QTextEdit(this);
    setCentralWidget(textEdit);
    //浮动窗口
    QDockWidget *dock = new QDockWidget(this);

    //给浮动窗口加控件
    addDockWidget(Qt::RightDockWidgetArea,dock);
    QTextEdit * textEdit2 = new QTextEdit(this);
    dock->setWidget(textEdit2);

    //添加模态对话框

    QMenu * pDlg = mBar->addMenu("对话框");
    QAction * p = pDlg->addAction("模态对话框");
    connect(p,&QAction::triggered,
            [=]()
    {
            QDialog a;
            a.exec();
    }
            );
    QAction * q=  pDlg->addAction("非模态对话框");
    connect(q,&QAction::triggered,
            [=]()
    {
            QDialog *a = new QDialog(this);
            a->show();
            /*
              不指定父对象
            QDialog *dlg1 = new QDialog;
            dlg1->setAttribute(Qt::WA_DeleteOnClose);//关闭对话框后释放内存
            dlg1->show();
*/
    }
            );

    resize(400,300);
}

MainWindow::~MainWindow()
{
}

1.首先需建立一个菜单栏

所谓菜单栏,就是放文件 编辑 构建...这些选项的地方

实现:

需要使用到的头文件

#include<QMenuBar>

源代码 

 

QMenuBar * mBar = menuBar();

在QWidget类中有一个menuBar()的函数,这个函数的解释如下

大体意思就是返回返回一个空的菜单栏的指针,并将这个空的菜单栏显示在主窗口上

 

2.创建一个菜单按钮

菜单按钮是什么呢?就是下图中这些文件 编辑 构建这些按钮

 

需要的头文件

#include<QMenu>

源代码

QMenu * pFile = mBar->addMenu("文件")

这样是创建一个名为“文件”的菜单按钮,并返回一个指向该菜单按钮的指针

运行结果

3.创建菜单选项

菜单选项就是点击菜单按钮后,下拉出来的选项,如

这些就是很多个菜单选项

 

需要的头文件

#include<QAction>

QAction类提供了抽象的用户界面action,这些action可以被放置在窗口部件中。

源代码

QAction *pNew = pFile->addAction("新建");
pFile->addSeparator();
QAction *pNew = pFile->addAction("打开");
pFile->addSeparator()是用来分隔新建和打开两个菜单选项,效果如下

运行结果

 

4.点击新建后可打印“新建”

 

需要用到的模块

CONFIG +=C++11

需要的头文件

#include<QDebug>

源代码

connect(pNew,&QAction::triggered,
[]()
{
    qDebug()<<"新建";
    //qDebug()相当于cout
}

);

运行结果

 

点击新建后输出“新建”

 

5.添加一个工具栏,并添加一个新建的快捷按钮以及自定义的按钮 

需要的头文件

#include<QToolBar>
#include<QPushBotton>

源代码

//工具栏  菜单栏的快捷方式
    QToolBar * toolBar = addToolBar("toolBar");

//工具栏添加快捷键
    toolBar->addAction(pNew);
    QPushButton *a = new QPushButton(this);
    a->setText("^_^");
    toolBar->addWidget(a);
    //槽函数与信号
    connect(a,&QPushButton::clicked,
            [=]()
            {
            a->setText("123");
            }

            );

运行结果如下

按下新建,则也可以输出“新建”

 

6.添加状态栏,并添加标签

 

需要的头文件

#include<QStatusBar>
#include<Label>

源代码

//添加状态栏
    QStatusBar * sBar = statusBar();
//添加标签
    QLabel *label = new QLabel(this);
    label->setText("Normal text file");
    sBar->addWidget(label);
    //addWidget从状态栏最左边往右添加
    sBar->addWidget(new QLabel("11",this));

    //从状态栏最右边往左添加
    sBar->addPermanentWidget(new QLabel("22",this));

运行结果

 

7.添加一个核心组件(文本编辑区)

需要的头文件

#include<QTextEdit>

源代码

QTextEdit *textEdit = new QTextEdit(this);
//将文本编辑组件放在主窗口的中央
setCentralWidget(textEdit);

 

运行结果

 

8.添加浮动窗口

 

需要的头文件

#include<QDockWidget>

 

源代码

//浮动窗口
    QDockWidget *dock = new QDockWidget(this);

    //给浮动窗口加控件
    addDockWidget(Qt::RightDockWidgetArea,dock);
    QTextEdit * textEdit2 = new QTextEdit(this);
    dock->setWidget(textEdit2);

运行结果

 

9.添加模态对话框与非模态对话框

模态对话框弹出后无法操作主窗口,而非模态对话框可以操作

模态对话框就是调用的时候使用exec(),非模态对话框是使用show()来调用。

需要的头文件

#include<QDialog>

源代码

//添加模态对话框

    QMenu * pDlg = mBar->addMenu("对话框");
    QAction * p = pDlg->addAction("模态对话框");
    connect(p,&QAction::triggered,
            [=]()
    {
            QDialog a;
            a.exec();
    }
            );
    QAction * q=  pDlg->addAction("非模态对话框");
    connect(q,&QAction::triggered,
            [=]()
    {
            QDialog *a = new QDialog(this);
            a->show();
            /*
              不指定父对象
            QDialog *dlg1 = new QDialog;
            dlg1->setAttribute(Qt::WA_DeleteOnClose);//关闭对话框后释放内存
            dlg1->show();
*/
    }
            );

 

运行结果

 

这个与浮动窗口是不一样的,浮动窗口可以附在主窗口里

如这个是浮动窗口

 

 

 

 

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值