Qt 学习第三天
3.1 QMainWindow 构成
QMainWindow 是一个为用户提供主窗口程序的类,包合一个菜单栏(Menu Bar)、多个工具栏(Tool Bar)、多个铆接部件(Dock Widget)、一个状态栏(Status Bar)及一个中心部件(Central Widget),是许多应用程序的基础,如文本编编器,图片编辑器等。
3.2 QMainWindow 各结构实现
首先创建一个基类是 QMainWindow 的类。
运行如下测试:
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QMenuBar>
#include <QToolBar>
#include <QDebug>
#include <QPushButton>
#include <QStatusBar>
#include <QLabel>
#include <QDockWidget>
#include <QTextEdit>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
setFixedSize(600, 400);
//创建菜单栏 最多有一个
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("按钮", this);
toolbar->addWidget(btn);
//状态栏 最多有一个
QStatusBar * stBar = new QStatusBar();
setStatusBar(stBar);
QLabel *label = new QLabel("提示信息", this);
stBar->addWidget(label);
QLabel *label2 = new QLabel("右侧提示信息", this);
stBar->addPermanentWidget(label2);
//铆接部件(浮动窗口)
QDockWidget * dockwidget = new QDockWidget("浮动", this);
addDockWidget(Qt::BottomDockWidgetArea, dockwidget);
//只允许铆接部件上下停靠
dockwidget->setAllowedAreas(Qt::TopDockWidgetArea | Qt::BottomDockWidgetArea);
//设置中心部件 只能一个
QTextEdit * edit = new QTextEdit(this);
setCentralWidget(edit);
}
MainWindow::~MainWindow()
{
delete ui;
}
运行结果:
3.3 对话框
点击新建按钮,触发对话框
实例如下:
//点击新建,弹出对话框
connect(newAction,&QAction::triggered,[=](){
//模式对话框(不可操作其他窗口)
// QDialog dig(this);
// dig.resize(200, 100);
// dig.exec();
//非模式对话框(可操作其他窗口)
// QDialog *dig2 = new QDialog(this);
// dig2->show();
// dig2->setAttribute(Qt::WA_DeleteOnClose);
//消息对话框
//错误对话框
// QMessageBox::critical(this, "critical", "错误");
//信息对话框
// QMessageBox::information(this,"info","信息");
//提问框
//参数1 父亲 参数2 标题 参数3 提示内容 参数4 按键类型 参数5 默认关联回车按键
// if(QMessageBox::Save == QMessageBox::question(this,"ques","提问",QMessageBox::Save|QMessageBox::Cancel,QMessageBox::Cancel))
// qDebug()<<"save";
// else
// qDebug()<<"cancel";
//警告对话框
// QMessageBox::warning(this,"warning","警告");
//其他标准对话框
//颜色对话框 输出 RGB 数值
// QColor color = QColorDialog::getColor(QColor(255,0,0));
// qDebug()<<"r = "<< color.red() << "g = " << color.green() << "b = " << color.blue();
//文件对话框 参数1 父亲 参数2 标题 参数3 默认打开路径 参数4 过滤文件格式 返回选取文件路径
// QString str = QFileDialog::getOpenFileName(this,"打开文件","C:/Users/29923/Desktop");
// qDebug()<<str;
//字体对话框
// bool flag;
// QFont qFont = QFontDialog::getFont(&flag,QFont("华文彩云",36));
// qDebug() << "字体, " << qFont.family() << "字号, "<< qFont.pointSize() << "是否加粗, "<< qFont.bold()<< "是否倾斜, "<<qFont.italic();
});