—— 均为自学笔记,如有错误请指正
第一节 QMainWindow
1. 简介
① QMainWindow 是一个为用户提供主窗口程序的类,包含:
- 一个菜单栏(menu bar):只能有一个(下图棕红色)
- 多个工具栏(tool bars):(下图粉色)
- 多个锚接部件(dock widgets):可以上下左右浮动停靠(下图绿色)
- 一个状态栏(status bar):提示状态(下图红色)
- 一个中心部件(central widget):(下图黄色)
② 编写时,set设置只有一个的,add设置可以有多个的:
-
菜单栏 setMenuBar(bar);
-
工具栏 addToolBar(Qt::LeftToolBarArea,toolBar);
-
状态栏 setStatusBar(stBar);
-
锚接部件 addDockWidget(Qt::BottomDockWidgetArea,dockwidget);
-
中心部件 setCentralWidget(edit);
2. 创建菜单栏 <QMenuBar>
//菜单栏创建
//一个程序中,菜单栏 只能最多有一个(也可以没有)
QMenuBar * bar = menuBar(); //系统提供的MenuBar()方法
//将菜单栏放入窗口中 因为默认不在窗口中
setMenuBar(bar);
//创建菜单 空的菜单栏不会显示 所以要创建菜单
QMenu * fileMenu = bar->addMenu("文件");
QMenu * editMenu = bar->addMenu("编辑");
//创建菜单项
QAction * newAction = fileMenu->addAction("新建");
fileMenu->addSeparator(); //利用菜单项添加分隔符
QAction * openAction = fileMenu->addAction("打开");
3. 创建工具栏 <QToolBar>
//工具栏创建
//工具栏可以有多个
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("aa",this);
toolBar->addWidget(btn); //所有控件都可以用Widget 用add的方式放进去
4. 创建状态栏 <QStatusBar>
// 创建状态栏
//状态栏最多有一个
QStatusBar * stBar = statusBar();
//设置到窗口中
setStatusBar(stBar);
//放置标签的控件
QLabel * label = new QLabel("提示信息",this);
stBar->addWidget(label);
QLabel * label2 = new QLabel("右侧提示信息",this);
stBar->addPermanentWidget(label2);
5. 创建锚接部件 <QDockWidget>
//锚接部件 (浮动窗口)
//可以有多个
QDockWidget * dockwidget = new QDockWidget("浮动",this);
//放到窗口中
addDockWidget(Qt::BottomDockWidgetArea,dockwidget); //(默认区域,指针)
//设置后期停靠区域,只允许上下
dockwidget->setAllowedAreas(Qt::TopDockWidgetArea | Qt::BottomDockWidgetArea);
6. 中心部件 <QCentralWidget>
//设置中心部件
//中心部件只能有一个
QTextEdit * edit = new QTextEdit(this); //一个文本编辑器
//放到窗口中
setCentralWidget(edit);
第二节 资源文件
1. 文件路径
在读取文件时,路径的写法有如下方式:
- 文件在当前目录(以图像文件为例,当前项目文件为中心)
"./1.jpg" 或 "1.jpg"
- 文件在上层目录
//在上层目录下
"../1.jpg"
//在上层目录下的一个Image文件夹下
"../Image/1.jpg"
//在上上层目录下
"../../1.jpg"
- 文件在下一层目录(Image1文件夹)
"./Image1/1.jpg"
- 根目录表示法,任何页面访问Image下的Image.jpg图片
"C:/Image/1.jpg"
——转自:且行且安~
2. 使用添加Qt资源
第一步:在外部放入项目
第二步:在Qt Creator中添加资源
① 先右击 02_QtSource → Add New...
② 给资源文件起名
③ 生成的文件
④ 转到其他文件会打不开此文件,需要右击res.qrc→Open in Editor操作
⑤ 添加前缀(最简单就是一个 /)
⑥ 添加文件 然后构建 则在左侧栏显示
⑦ 使用Qt资源
//语法
":+前缀名+文件名"
//添加图标
ui->actionnew->setIcon(QIcon("../Image/Luffy.png"));
第三节 对话框
1. 创建对话框(自定义消息对话框)
//点击新建按钮 弹出一个对话框
connect(ui->actionnew,&QAction::triggered,[=]()
{
//对话框分两类:模态对话框、非模态对话框
//模态对话框创建(不可以对其他的窗口进行操作)
QDialog dlg(this);
dlg.resize(300,200);
dlg.exec(); //阻塞
//非模态对话框创建(可以对其他的窗口进行操作)
QDialog * dlg2 = new QDialog(this);
dlg2->resize(300,200);
dlg2->show(); //防止一闪而过,创建到堆区
lg2->setAttribute(Qt::WA_DeleteOnClose); //关闭新建的文件,随关闭释放 防止内内存泄漏
});
2. 标准对话框
QColorDialog | 选择颜色 |
QFileDialog | 选择文件或者目录 |
QFontDialog | 选择字体 |
QInputDialog | 允许用户输入一个值,并将其值返回 |
QMessageBox | 模态对话框,用于显示信息、询问问题等 |
QPageSetupDialog | 为打印机提供纸张相关的选项 |
QPrintDialog | 打印机配置 |
QPringPreviewDialog | 打印预览 |
QProgressDialog | 显示操作过程 |
3. 消息对话框
① QMwssageBox用法:
//错误对话框
QMessageBox::critical(this,"critical","错误");
//信息对话框
QMessageBox::information(this,"info","信息");
//提问对话框
//5个参数:(父亲,标题名,提示内容,关联按键类型,默认关联回车按键)
if(QMessageBox::question(this,"ques","提问",QMessageBox::Save
|QMessageBox::Cancel,QMessageBox::Cancel))
{
}
else
{
}
//警告对话框
QMessageBox::warning(this,"warning","警告");
//其他标准对话框
QColorDialog::getColor(QColor(255,0,0)); //默认用红色打开
//文件对话框
//参数(父亲,标题,默认打开路径(不设置路径会按照当前项目打开),过滤文件格式)
//返回值是选取的路径
QFileDialog::getOpenFileName(this,"打开文件","默认路径","(*.txt)");
//字体对话框
//参数 (默认字体名称,字体大小)
bool flag;
QFont font = QFontDialog::getFont(&flag,QFont("华文彩云",36));
qDebug() << "字体: " << font.family().toUtf8().data() << "字号: " << font.pointSize() << "是否加粗: " << font.bold() << "是否倾斜: " << font.italic() ;