前期准备
- 安装QT
- 在终端中使用 -v形式的命令检查是否安装了gcc,g++,clang,make,make-guile,cmake。如果没有安装,则使用sudo apt install 形式的命令进行安装。
- 使用
sudo apt-get install build-essential
命令安装qt组件。 - 使用
sudo apt-get install qtbase5-dev qtchooser qt5-qmake qtbase5-dev-tools
命令安装qt开发工具。 - 使用
sudo apt-get install qtcreator
命令安装qtcreator。 - 使用
sudo apt-get install qt5*
命令安装qt5。
- 配置qt环境变量
- 使用
sudo vim /etc/profile
编辑/etc/profile文件,在文件最后一行中根据你自己的qt的bin的安装路径(我的是/usr/lib/qt5/bin
)写入PATH='your bin path:$PATH'
。 - 使用
source /etc/profile
命令更新/etc/profile文件
- 在vscode中安装clangd,CMake,CMake Tools,CodeLLDB,Qt tools插件
项目创建编码及其构建
- 在项目所在目录下创建项目文件结构
- 结构如图
- build文件夹是cmake编译项目的中间产物的集中管理文件夹
- resources文件夹是存储项目所需资源的文件夹,如图片等
- src为源代码管理文件夹
- app文件夹为qt主程序所在文件夹
- textFinder文件夹为qt相关界面组件实现代码文件夹
- include文件夹为qt界面组件头文件文件夹
- src文件夹为qt界面组件实现代码文件夹
- 编写源程序
- 编写qt主程序
在../src/app(..代表你的项目所在目录位置)文件夹下编写主程序main.cpp如下
#include <textfinder.h> //自己实现的界面组件头文件
#include <QApplication>//QT图形应用程序类,它调用各级界面以实现qt程序
int main(int argc, char **argv) {
QApplication a(argc, argv);//实例一个应用程序类对象
TextFinder w;//实例化一个自己实现界面类对象
w.show();//现实所实现的界面
return a.exec();//循环以实现项目的持续存在
}
- 编写自己所定义的界面类
在../src/textFinder/include文件夹下编写自己定义界面类的头文件textfinder.h如下
// 头文件
/**
头文件在最前面两行写入
#ifndef _YOURHEAFILENMAT_H_
#define_YOURHEAFILENMAT_H_
在最后一行写入
#endif
通过以上方式的三个预处理命令可以防止当一个头文件被多个文件的同时包含的情况下,在编译连接时出现的重复定义错误
**/
#ifndef _TEXTFINDER_H_
#define _TEXTFINDER_H_
#include <QLineEdit>
#include <QTextEdit>
#include <QWidget>
class TextFinder : public QWidget {
Q_OBJECT//使用qt的信号和槽机制时在类的声明中必须要写的一个宏。
public:
TextFinder(QWidget *parent = nullptr);//构造函数,父窗口代表着该窗口依赖于哪一个窗口
~TextFinder();
private:
QTextEdit *m_pTextEidt;
QLineEdit *m_pLineEdit;
#@brief 初始化UI
void initUI();
#@brief 加载文本文件
void loadTextFile();
private slots:
void onBtnFindClicked();
};
#endif
编写各级CMakeLists.txt文件以实现项目的构建
- 此示例主要有两级CMakeLists.txt文件,一级是和src同目录的CMakeLists.txt文件,下一级是src/app和src/textFinder里的CMakeLists.txt文件。两级文件由第一级的CMakeLists.txt文件中的add_subdirectory()进行联系起以达到构建整个项目的目的。
- 第一级CMakeLists.txt文件
- 其主要工作进行一些基础设置(如项目名),设置QT所特有的编译选项,如MOC,引入并构建子目录等。
- 内容如下:
- 第二级中src/textFinderd的CMakeLists.txt文件
- 主要做生成自定义的textFinder库,链接QT的Widgets库等工作。
- 内容如下:
- 第二级中src/app的CMakeLists.txt文件
- 主要做生成目标文件的工作,使用了先生成目标文件,再使用target_sources()命令添加源文件的模式,链接各种库等工作。
- 其内容如下: