Qt开发之QMainWindow的组件代码简单罗列

先讲一下QMainWindow的布局,MainWindow的结构分为五个部分:菜单栏(Menu Bar)、工具栏(Toolbars)、停靠窗口(Dock Widgets)、状态栏(Status Bar)和中央窗口(Central Widget)。可以用下面的图形表示之。

直接从代码里面说吧,都基本有注释,只是简单做一介绍,

#include "mainwindow.h"
#include <QPushButton>       //按钮
#include <QMenuBar>          //菜单栏
#include <QMenu>             //菜单
#include <QAction>           //菜单项
#include <QToolBar>          //工具栏
#include <QStatusBar>        //状态栏
#include <QLabel>            //标签
#include <QDockWidget>       //铆接部件
#include <QTextEdit>         //编辑框
#include <QPixmap>           //图片
#include <QFileDialog>       //文件对话框
#include <QDialog>           //对话框
#include <QMessageBox>       //消息对话框
#include <QString>
#include <QDebug>
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    this->setWindowTitle("QMainWindow");
    this->resize(600,400);
    //取出菜单栏
     QMenuBar *menuBar1=this->menuBar();
     //向菜单栏上去添加菜单
     QMenu *filemenu= menuBar1->addMenu("文件");
     QMenu *fileedit= menuBar1->addMenu("编辑");
     //向菜单栏添加菜单项
     QAction *filemenu_open=filemenu->addAction("打开");
     filemenu->addSeparator();//添加分割线
     QAction *filemenu_save=filemenu->addAction("保存");
     filemenu->addSeparator();//添加分割线
     QAction *filemenu_delete=filemenu->addAction("删除");

     //获取工具栏
     QToolBar *toolbar=this->addToolBar("");
     //工具栏中添加工具(添加菜单项)
     toolbar->addAction(filemenu_open);
     toolbar->addAction(filemenu_save);

     //取出状态栏
     QStatusBar *status=this->statusBar();
     status->addWidget(new QLabel("状态"));

     //创建铆接部件
     QDockWidget *dockwidget=new QDockWidget ("这是一个铆接部件",this);
     //添加活动窗口到父窗口
     this->addDockWidget(Qt::TopDockWidgetArea,dockwidget);

     //创建编辑框
     QTextEdit *edit=new QTextEdit("文本编辑器",this);
     //设置编辑框为中心部件
     this->setCentralWidget(edit);

     //资源文件的路径:/new/prefix1/images/lo.bmp
     QPixmap pic; //新建图片对象
     pic.load(":/new/prefix1/images/lo.bmp");//给图片对象加载图像
     //给菜单项设置为图片
     filemenu_open->setIcon(QIcon(pic));

     //标准对话框->文件选择对话框
     QPushButton *button1=new QPushButton("选择文件",this);
     button1->resize(100,50);
     button1->move(250,100);
     connect(button1,&QPushButton::clicked,this,[](){
         //单个文件
         QString str=QFileDialog::getOpenFileName();
         //多个文件
         //QStringList strs=QFileDialog::getOpenFileNames();
         qDebug()<<str;
     });

     //模态对话框:对话框打开的时候不能点击后面主框
     QPushButton *button2=new QPushButton("模态对话框按钮",this);
     button2->resize(100,50);
     button2->move(250,180);
     connect(button2,&QPushButton::clicked,this,[](){
         //定义一个对话框
         QDialog dialog;
         dialog.setWindowTitle(tr("hello,dialog!模态对话框"));//设置对话框标题
         dialog.exec();//阻塞对话框
     });

     //非模态对话框:对话框打开的时候可以点击后面主框
     QPushButton *button3=new QPushButton("非模态对话框按钮",this);
     button3->resize(100,50);
     button3->move(250,260);
     connect(button3,&QPushButton::clicked,this,[](){
         //定义一个对话框
         QDialog *dialog = new QDialog;
         dialog->setWindowTitle(tr("hello,dialog!非模态对话框"));//设置对话框标题
         dialog->setAttribute(Qt::WA_DeleteOnClose);//关闭的时候自动释放
         dialog->show();//显示对话框
     });

     //消息对话框   关于类型
     QPushButton *button4=new QPushButton("关于",this);
     button4->resize(100,50);
     button4->move(100,100);
     connect(button4,&QPushButton::clicked,this,[=](){
         QMessageBox::about(this,"标题","内容");
     });

     //消息对话框   询问类型
     QPushButton *button5=new QPushButton("询问",this);
     button5->resize(100,50);
     button5->move(100,180);
     connect(button5,&QPushButton::clicked,this,[=](){
         int ret = QMessageBox::question(this,"标题","你需要吗?",QMessageBox::Save|QMessageBox::Open);
         if (ret==QMessageBox::Open){
             qDebug()<<"open!!!";
         }
         else{
             qDebug()<<"save!!!";
         }
     });

}

MainWindow::~MainWindow()
{

}

(1)整体布局

(2)菜单栏显示菜单

(3)工具栏

(4)状态栏

(5) 消息对话框

关于对话框

选择对话框

(6)铆接部件,可拖动出来显示为另一个窗口或可改变其位置

(7)中心部件

(8)对话框

标准对话框(文件选择对话框),是模态的对话框

模态对话框:点击按钮之后产生对话框之后不能再点击主框中的按钮及 其他的

 

模态对话框:点击按钮之后产生对话框之后可以再点击主框中的按钮及 其他的

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Demo.demo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值