Qt编程第二天

菜单栏

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//1、菜单栏 只能有一个
QMenuBar * bar = menuBar(); //创建菜单栏
setMenuBar(bar); //将菜单栏添加到窗口

//创建菜单
QMenu * fileMenu = bar->addMenu("文件");
QMenu * editMenu = bar->addMenu("编辑");

//创建菜单项
QAction * newAction = fileMenu->addAction("新建");

//添加分割线
fileMenu->addSeparator();

QAction * openAction = fileMenu->addAction("打开");

工具栏

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
//2、工具栏 可以有多个
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);

状态栏

1
2
3
4
5
6
7
8
9
//状态栏  只能有一个
QStatusBar * stBar = statusBar();
setStatusBar(stBar);

QLabel * label1 = new QLabel("左侧提示信息",this);
stBar->addWidget(label1);

QLabel * label2 = new QLabel("右侧提示信息",this);
stBar->addPermanentWidget(label2);

铆接部件 (浮动窗口)

//铆接部件 (浮动窗口)  可以有多个
QDockWidget * dock = new QDockWidget("aaa" ,this);
addDockWidget(Qt::BottomDockWidgetArea,dock);

 //只允许左右停靠
dock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);

核心部件 只能有一个

1
2
3
//核心部件  只能有一个
QTextEdit * edit = new QTextEdit(this);
setCentralWidget(edit); //将记事本设置成核心部件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
#include "mainwindow.h"
#include <QMenuBar>
#include <QToolBar>
#include <QLabel>
#include <QStatusBar>
#include <QDockWidget>
#include <QTextEdit>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{

resize(600,400);

//1、菜单栏 只能有一个
QMenuBar * bar = menuBar();
setMenuBar(bar);

//创建菜单
QMenu * fileMenu = bar->addMenu("文件");
QMenu * editMenu = bar->addMenu("编辑");

//创建菜单项
QAction * newAction = fileMenu->addAction("新建");

//添加分割线
fileMenu->addSeparator();

QAction * openAction = fileMenu->addAction("打开");


//2、工具栏 可以有多个
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);

//状态栏 只能有一个
QStatusBar * stBar = statusBar();
setStatusBar(stBar);

QLabel * label1 = new QLabel("左侧提示信息",this);
stBar->addWidget(label1);

QLabel * label2 = new QLabel("右侧提示信息",this);
stBar->addPermanentWidget(label2);



//铆接部件 (浮动窗口) 可以有多个
QDockWidget * dock = new QDockWidget("aaa" ,this);
addDockWidget(Qt::BottomDockWidgetArea,dock);

//只允许左右停靠
dock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);

//核心部件 只能有一个
QTextEdit * edit = new QTextEdit(this);
setCentralWidget(edit);
}



MainWindow::~MainWindow()
{

}



UI界面设计

这里面不能输入中文

image-20231025222114426

输入英文后再这里可以修改为中文

image-20231025222220405



资源文件

添加资源文件

img

img

打开资源文件需要鼠标右键选择 Open in Editor

image-20231025011538366

img

添加前缀用以区分资源文件,相当于文件夹

image-20231025011639424

image-20231025011612121

添加文件

image-20231025011704071.

如果上面添加不了,可以用鼠标右键选择对应的选项来添加

image-20231025011853479

1
资源文件添加   语法:   ": + 前缀名  + 文件名称"
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);


//给新建添加小图标
//ui->actionNew->setIcon(QIcon("E:/Image/Luffy.png"));

//资源文件添加 语法: ": + 前缀名 + 文件名称"
ui->actionNew->setIcon(QIcon(":/Image/Luffy.png"));

ui->actionOpen->setIcon(QIcon(":/Image/LuffyQ.png"));
}

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





对话框

模态对话框创建

1
2
3
4
//模态对话框创建
// QDialog dlg(this);
// dlg.resize(120,30);
// dlg.exec();

非模态对话框

1
2
3
4
5
6
//非模态对话框创建
// QDialog *dlg2 = new QDialog(this);
// dlg2->resize(120,30);
// dlg2->show();
// //设置 55号属性
// dlg2->setAttribute(Qt::WA_DeleteOnClose);

QMessageBox对话框

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
//错误提示对话框
//QMessageBox::critical(this,"错误","critical");

//信息提示对话框
//QMessageBox::information(this,"信息","info");

//询问提示对话框
// 参数1 父窗口 参数2 标题 参数3 提示信息 参数4 按键类型 参数5 默认关联回车按键
// if( QMessageBox::Save == QMessageBox::question(this,"询问","question" , QMessageBox::Save | QMessageBox::Cancel ,QMessageBox::Cancel))
// {
// qDebug()<<"点击的是保存";
// }
// else
// {
// qDebug()<<"点击的是取消";
// }


//警告提示对话框
//QMessageBox::warning(this,"警告","warning");

标准常用的对话框

1
2
3
4
5
6
7
8
9
QColorDialog:			选择颜色;
QFileDialog: 选择文件或者目录;
QFontDialog: 选择字体;
QInputDialog: 允许用户输入一个值,并将其值返回;
QMessageBox: 模态对话框,用于显示信息、询问问题等;
QPageSetupDialog: 为打印机提供纸张相关的选项;
QPrintDialog: 打印机配置;
QPrintPreviewDialog: 打印预览;
QProgressDialog: 显示操作过程。



1
2
3
4
5
6
7
8
9
10
11
12
13
//颜色对话框
// QColor color = QColorDialog::getColor(Qt::red);
// qDebug() << color.red() << color.green() << color.blue() ;

//文件对话框
// QString fileName = QFileDialog::getOpenFileName(this,"打开文件","C:\\Users\\zhangtao\\Desktop","(*.doc)");
// qDebug () <<fileName;

//字体对话框
bool flag;
QFont font = QFontDialog::getFont(&flag,QFont("华文彩云",36));
qDebug() << "字体" << font.family().toUtf8().data() << "字号"<< font.pointSize()
<< "是否加粗"<<font.bold() << "是否倾斜" << font.italic();

界面布局

标签

image-20231107221304796



单行编辑框

image-20231107221411172

echoMode属性

image-20231107224230784

  1. Normal(正常模式):这是默认模式,用户输入的文本以明文形式显示在编辑框中。这是最常见的使用方式,适用于大多数文本输入场景。
  2. NoEcho(无回显模式):在这个模式下,用户输入的文本不会显示在编辑框内,用于隐藏用户输入的文本,例如用于密码输入,以保护敏感信息。
  3. Password(密码模式):在这个模式下,用户输入的文本以密码掩码字符(通常是圆点或星号)显示在编辑框内。这是用于密码输入框的常见设置,以保护密码的机密性。
  4. PasswordEchoOnEdit(编辑时密码模式):用户在输入时,文本以明文形式显示在编辑框内,但当编辑框失去焦点后,文本会以密码掩码字符显示。这是一种用户友好的密码输入方式,让用户能够确认他们输入的内容。



容器

image-20231107221630854

容器属性:

​ 固定容器大小



image-20231107223351226

水平布局

image-20231107222105903



垂直布局

image-20231107222141029



栅格布局

几行几列的选栅格布局,然后再选垂直布局

image-20231107222937304

没有布局会有红圈

image-20231107222017658



弹簧

固定布局的

image-20231107222349302

弹簧属性

image-20231107222510511

Fixed是固定弹簧大小

Expanding是可伸缩的



打破布局

image-20231107222718372

image-20231107222802528



修改窗口标题

image-20231107223711556



修改容器内边距

image-20231107223909831

image-20231107223938922



固定窗口大小

image-20231107224614856

把minimumSize和maximumSize值都设置一样

常用控件–按钮组