02QMainWindow

QMainWindow是一个为用户提供主窗口程序的类,包含一个菜单栏(menu bar)、多个工具栏(tool bars)、多个锚接部件(dock widgets)、一个状态栏(status bar)及一个中心部件(central widget),是许多应用程序的基础,如文本编辑器,图片编辑器等。

 1 创建项目

 

    1. 菜单栏 最多有一个
      1.  QMenuBar * bar = MenuBar();
      2.  setMenuBar( bar )
      3.  QMenu * fileMenu = bar -> addMenu(“文件”)   创建菜单
      4.  QAction * newAction =  fileMenu ->addAction(“新建”); 创建菜单项
      5.  添加分割线 fileMenu->addSeparator();
    2. 工具栏 可以有多个
      1. QToolBar * toolbar = new QToolBar(this);
      2. addToolBar( 默认停靠区域, toolbar );  Qt::LeftToolBarArea
      3. 设置  后期停靠区域,设置浮动,设置移动
      4. 添加菜单项 或者添加 小控件
    3. 状态栏  最多一个
      1. QStatusBar * stBar = statusBar();
      2. 设置到窗口中 setStatusBar(stBar);
      3.   stBar->addWidget(label);放左侧信息
      4.   stBar->addPermanentWidget(label2); 放右侧信息
    4. 铆接部件  浮动窗口  可以多个
      1. QDockWidget
      2. addDockWidget( 默认停靠区域,浮动窗口指针)
      3. 设置后期停靠区域
    5. 设置核心部件  只能一个
      1. setCentralWidget(edit);

mainwindow.cpp

#include "mainwindow.h"
#include <QMenuBar>
#include <QToolBar>
#include <QDebug>
#include <QPushButton>
#include <QStatusBar>
#include <QLabel>
#include <QDockWidget>
#include <QTextEdit>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    // 重置窗口大小
    resize(800,600);
    //菜单栏 最多一个
    // 菜单栏创建  QMenuBar源码默认放到对象树了
    QMenuBar * bar = menuBar();
    //将菜单栏挂载到窗口中(如果没有这一步,窗口没有显示菜单栏)
    setMenuBar(bar); //此时 因为是空的 所以什么都不显示
    //创建菜单
    QMenu * fileMenu = bar->addMenu("文件");
    QMenu * editMenu = bar->addMenu("编辑");
    //创建菜单项
    QAction * newAction = fileMenu->addAction("新建");
    //添加分隔线
    fileMenu->addSeparator();
    QAction * openAction = fileMenu->addAction("打开");

    //工具栏 可以有多个
    QToolBar * toolBar = new QToolBar(this);//放到对象树上去
    //挂载到窗口上
    addToolBar(Qt::LeftToolBarArea,toolBar); //运行会报错  因为没有包含到头文件
    // 后期设置  只允许 左右停靠  (可以去看帮助文档)
    toolBar->setAllowedAreas(Qt::LeftToolBarArea | Qt::RightToolBarArea);
    // 设置浮动
    toolBar->setFloatable(false);
    //设置移动(总开关)
    toolBar->setMovable(false);
    //工具栏中可以设置内容
    toolBar->addAction(newAction);
     //添加分隔线
    toolBar->addSeparator();
    toolBar->addAction(openAction);
    //工具栏中可以添加控件
    QPushButton * btn = new QPushButton("A",this);
    toolBar->addWidget(btn);

    //状态栏 最多一个
    QStatusBar * stBar = statusBar();
    //挂载到窗口上
    setStatusBar( stBar);
    //放标签部件
    QLabel * label = new QLabel("提示信息",this);
    stBar->addWidget(label); //放左侧信息
   // stBar->addPermanentWidget(label);//放右侧信息

    //铆接部件(浮动窗口) 可以有多个
    QDockWidget * dockWidget = new QDockWidget("浮动",this);
    addDockWidget(Qt::BottomDockWidgetArea,dockWidget);
    //设置后期停靠区域 只允许上下
    dockWidget->setAllowedAreas(Qt::TopDockWidgetArea | Qt::BottomDockWidgetArea);
    //设置中心部件(如果没有中间的内容,浮动在上面 因为没有内容)  最多一个
    QTextEdit * edit = new QTextEdit(this);
    setCentralWidget(edit);


}

MainWindow::~MainWindow()
{
}

资源文件添加

 点开.ui文件可以进入设计页面,可以进行设计

 添加后的运行结果(并且控件名称也自动新建了)

2. 添加资源文件(如图标)

使用添加Qt资源

1、找到使用的资源文件复制到项目中,如何进入项目中见下图

点击即可进入项目中,然后将资源文件复制进去 。

2、

 点击进入后

 选择好后

 然后点击完成即可。

 

 代码mainwindow.cpp

 3.对话框

新建文件

然后一直点下一步即可 

先进入ui设计页面 ,进行一个基础的设计

然后去mianwindow.cpp代码实现添加对话框

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDialog>
#include <QtDebug>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    // 点击新建按钮 弹出一个对话框
    //利用信号和槽
    connect(ui->actionnew,&QAction::triggered,[=](){
        // 对话框分类
        // 模态对话框(不可以对其他窗口进行操作) 非模态对话框(可以对其他窗口进行操作)
        //模态创建 因为阻塞 发挥它的作用-不可以对其他窗口进行操作
//        QDialog dlg(this);//这个对象可以指定一下它的父亲,放到对象树上 不用管它的释放
//        dlg.resize(200,100);
//        dlg.exec(); //阻塞   因为阻塞了 所以可以创建在栈上
//        qDebug()<< "模态对话框弹出了";

//        // 非模态对话框创建
        QDialog * dlg2 = new QDialog(this);  //没有阻塞 所以创建在堆上 因为会一闪而过继续创建在栈上
        dlg2->resize(200,100);
        dlg2->show();
        dlg2->setAttribute(Qt::WA_DeleteOnClose);//如果对象(即对话框)无限创建,使用这个释放一下
        qDebug()<< "非模态对话框弹出了";

    });
}

MainWindow::~MainWindow()
{
    delete ui;
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值