2.Qt的编译

144 阅读5分钟

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++程序的主函数入口。

argcargv用于接收命令行参数,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();
  1. 创建:QWidget w; - 创建窗口对象

  2. 设置:w.setLayout(mainLayout); - 设置布局

  3. 显示:w.show(); - 显示窗口

  4. 运行:app.exec(); - 启动事件循环

  5. 关闭:用户关闭窗口或程序结束

  6. 销毁:对象自动销毁

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();  
}

8.最终项目

image.png