QMainWindow是一个为用户提供主窗口程序的类,包含一个菜单栏(menu bar)、多个工具栏(tool bars)、多个锚接部件(dock widgets)、一个状态栏(status bar)及一个中心部件(central widget),是许多应用程序的基础,如文本编辑器,图片编辑器等。
1 创建项目
- 菜单栏 最多有一个
- QMenuBar * bar = MenuBar();
- setMenuBar( bar )
- QMenu * fileMenu = bar -> addMenu(“文件”) 创建菜单
- QAction * newAction = fileMenu ->addAction(“新建”); 创建菜单项
- 添加分割线 fileMenu->addSeparator();
- 工具栏 可以有多个
- QToolBar * toolbar = new QToolBar(this);
- addToolBar( 默认停靠区域, toolbar ); Qt::LeftToolBarArea
- 设置 后期停靠区域,设置浮动,设置移动
- 添加菜单项 或者添加 小控件
- 状态栏 最多一个
- QStatusBar * stBar = statusBar();
- 设置到窗口中 setStatusBar(stBar);
- stBar->addWidget(label);放左侧信息
- stBar->addPermanentWidget(label2); 放右侧信息
- 铆接部件 浮动窗口 可以多个
- QDockWidget
- addDockWidget( 默认停靠区域,浮动窗口指针)
- 设置后期停靠区域
- 设置核心部件 只能一个
- 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;
}