1.Qt框架
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
return app.exec();
}
1.#include <QApplication>
这行代码是头文件包含,意思是引入Qt框架中用于管理应用程序的QApplication类。
QApplication是所有Qt GUI程序的基础类,负责管理应用的控制流和主要设置,比如事件循环、窗口管理等。
2.int main(int argc, char *argv[])
这是C++程序的主函数入口。
argc和argv用于接收命令行参数,Qt应用程序也支持命令行参数传递。
3.QApplication app(argc, argv);
创建一个QApplication对象,名字叫app。
这个对象的生命周期贯穿整个应用程序,负责初始化Qt库、解析命令行参数、管理应用级资源等。 只有创建了QApplication对象,Qt的窗口、控件等功能才能正常使用。
4.return app.exec();
app.exec()启动Qt的事件循环(也叫消息循环)。
事件循环会不断监听和分发用户操作(如鼠标点击、键盘输入)、窗口刷新等事件,直到应用程序退出。 当你关闭所有窗口或调用app.quit()时,app.exec()会返回,主函数结束,程序退出。
2.Qt控件的使用
2.1QLabel标签
#include <QLabel>
QLabel *infoLabel = new QLabel;// 运行标签
QLabel *openLabel = new QLabel;// 打开标签
1. #include <QLabel>
-
作用:包含Qt框架中的QLabel类的头文件
-
QLabel:Qt中用于显示文本或图像的标签控件
-
功能:可以显示静态文本、图片、HTML格式文本等
2. QLabel *infoLabel = new QLabel;
-
QLabel *:声明一个指向QLabel对象的指针
-
infoLabel:变量名,用于标识这个标签对象
-
new QLabel:在堆内存中创建一个新的QLabel对象
3. QLabel *openLabel = new QLabel;
- 同样创建一个QLabel对象,变量名为openLabel
2.2QLineEdit行编辑框
#include <QLineEdit>
QLineEdit *cmdLineEdit = new QLineEdit;// 打开标签后面的文本行编辑
1. #include <QLineEdit>
-
作用:包含Qt框架中的QLineEdit类的头文件
-
QLineEdit:Qt中用于单行文本输入的控件
-
功能:用户可以在这个控件中输入、编辑、删除文本内容
2. QLineEdit *cmdLineEdit = new QLineEdit;
-
QLineEdit *:声明一个指向QLineEdit对象的指针
-
cmdLineEdit:变量名,用于标识这个文本编辑框对象
-
new QLineEdit:在堆内存中创建一个新的QLineEdit对象
2.3QPushButton按钮
#include <QPushButton>
QPushButton *commitButton = new QPushButton;// 确定按钮
QPushButton *cancelButton = new QPushButton;// 取消按钮
QPushButton *browseButton = new QPushButton;// 浏览按钮
1. #include <QPushButton>
-
作用:包含Qt框架中的QPushButton类的头文件
-
QPushButton:Qt中最常用的按钮控件
-
功能:用户可以点击按钮来触发相应的操作
2. QPushButton *commitButton = new QPushButton;// 确定按钮
QPushButton *cancelButton = new QPushButton;// 取消按钮
QPushButton *browseButton = new QPushButton;// 浏览按钮
-
QPushButton *:声明指向QPushButton对象的指针
-
commitButton:确定按钮,用于确认操作
-
cancelButton:取消按钮,用于取消操作
-
browseButton:浏览按钮,用于浏览文件或目录
3.Qt控件设置文本
infoLabel->setText("输入命令行");
openLabel->setText("打开");
commitButton->setText("确定");
cancelButton->setText("取消");
browseButton->setText("浏览");
1. infoLabel->setText("输入命令行");
-
infoLabel:指向QLabel对象的指针
-
->:指针访问操作符,用于访问对象的成员函数
-
setText():QLabel类的成员函数,用于设置标签显示的文本
-
"输入命令行":要显示的文本内容,用双引号包围的字符串
2. openLabel->setText("打开");
- 为openLabel标签设置显示文本为"打开"
3. 按钮文本设置
- commitButton设置成确定文本
- cancelButton设置成取消文本
- browseButton设置成浏览文本
4.Qt布局
#include <QHBoxLayout> // 水平布局
#include <QVBoxLayout> // 垂直布局
// 打开和文本行编辑在同一水平布局上
QHBoxLayout *cmdLayout = new QHBoxLayout;
cmdLayout->addWidget(openLabel);
cmdLayout->addWidget(cmdLineEdit);
//确定,取消和浏览按钮在同一水平布局上
QHBoxLayout *buttonLayout = new QHBoxLayout;
buttonLayout->addWidget(commitButton);
buttonLayout->addWidget(cancelButton);
buttonLayout->addWidget(browseButton);
// 1.输入命令行 2.打开和文本行 3.确定,取消和浏览按钮 处于垂直布局上
QVBoxLayout *mainLayout = new QVBoxLayout;
mainLayout->addWidget(infoLabel);
// 将水平布局放在垂直布局上
mainLayout->addLayout(cmdLayout);
mainLayout->addLayout(buttonLayout);
1. 头文件包含
-
QHBoxLayout:水平布局管理器,控件从左到右排列
-
QVBoxLayout:垂直布局管理器,控件从上到下排列
2. 第一个水平布局
-
创建水平布局:QHBoxLayout *cmdLayout = new QHBoxLayout;
-
添加控件:将"打开"标签和文本编辑框放在同一行
-
排列方式:openLabel(打开标签)在左,cmdLineEdit(文本编辑框 )在右
3. 第二个水平布局
-
创建水平布局:QHBoxLayout *buttonLayout = new QHBoxLayout;
-
添加控件:将三个按钮放在同一行
-
排列方式:从左到右依次是"确定"、"取消"、"浏览"按钮
4. 垂直布局整合
-
创建垂直布局:QVBoxLayout *mainLayout = new QVBoxLayout;
-
添加控件和子布局:从上到下依次排列
5. 布局结构图
主垂直布局 (mainLayout)
├── 控件: infoLabel ("输入命令行")
├── 子布局: cmdLayout (水平布局)
│ ├── 控件: openLabel ("打开")
│ └── 控件: cmdLineEdit (文本输入框)
└── 子布局: buttonLayout (水平布局)
├── 控件: commitButton ("确定")
├── 控件: cancelButton ("取消")
└── 控件: browseButton ("浏览")
5.Qt窗口
#include <QWidget>
QWidget w;
w.setLayout(mainLayout);
w.show();
-
创建:
QWidget w;- 创建窗口对象 -
设置:
w.setLayout(mainLayout);- 设置布局 -
显示:
w.show();- 显示窗口 -
运行:
app.exec();- 启动事件循环 -
关闭:用户关闭窗口或程序结束
-
销毁:对象自动销毁
6.设置Qt窗口标题
w.setWindowTitle("命令行输入"); // 设置窗口标题
7.完整代码
#include <QApplication>
#include <QLabel>
#include <QLineEdit>
#include <QPushButton>
#include <QHBoxLayout> // 水平布局
#include <QVBoxLayout> // 垂直布局
#include <QWidget>
int main(int argc, char *argv[])
{
// 1.Qt框架
QApplication app(argc, argv);
// 2.Qt控件的使用
// 2.1 QLabel标签
QLabel *infoLabel = new QLabel; // 运行标签
QLabel *openLabel = new QLabel; // 打开标签
// 2.2 QLineEdit行编辑框
QLineEdit *cmdLineEdit = new QLineEdit; // 打开标签后面的文本行编辑
// 2.3 QPushButton按钮
QPushButton *commitButton = new QPushButton; // 确定按钮
QPushButton *cancelButton = new QPushButton; // 取消按钮
QPushButton *browseButton = new QPushButton; // 浏览按钮
// 3.Qt控件设置文本
infoLabel->setText("输入命令行");
openLabel->setText("打开");
commitButton->setText("确定");
cancelButton->setText("取消");
browseButton->setText("浏览");
// 4.Qt布局
// 打开和文本行编辑在同一水平布局上
QHBoxLayout *cmdLayout = new QHBoxLayout;
cmdLayout->addWidget(openLabel);
cmdLayout->addWidget(cmdLineEdit);
// 确定,取消和浏览按钮在同一水平布局上
QHBoxLayout *buttonLayout = new QHBoxLayout;
buttonLayout->addWidget(commitButton);
buttonLayout->addWidget(cancelButton);
buttonLayout->addWidget(browseButton);
// 1.输入命令行 2.打开和文本行 3.确定,取消和浏览按钮 处于垂直布局上
QVBoxLayout *mainLayout = new QVBoxLayout;
mainLayout->addWidget(infoLabel);
// 将水平布局放在垂直布局上
mainLayout->addLayout(cmdLayout);
mainLayout->addLayout(buttonLayout);
// 5.Qt窗口
QWidget w;
w.setLayout(mainLayout);
w.show();
// 6.设置Qt窗口标题
w.setWindowTitle("命令行输入"); // 设置窗口标题
return app.exec();
}