更多精彩内容 |
---|
👉内容导航 👈 |
👉Qt开发经验 👈 |
1 程序依赖文件自动安装
-
有时候我们程序会使用到依赖文件,而我们又不想把文件放到资源文件中,这就导致了每次编译、修改后都需要手动拷贝到当前文件夹下,非常麻烦;
-
其实我们可以通过QMake来设置,在pro文件中使用INSTALLS来将指定文件安装到指定路径
webFile.path = $$path # 文件安装路径 webFile.files = $$PWD/lib # 文件/文件夹原本位置 INSTALLS += webFile
-
注意: 只是设置了上面代码,编译后不会生效,需要手动输入下列命令来将文件安装到指定路径;
- msvc编译器:
nmake install
或者jom.exe install
; - MinGW编译器:
mingw32-make install
; - gcc编译器:
make install
- 注意:如果这些make没有环境变量,则不一定执行成功,可以使用绝对路径,例如:
D:\Qt\Qt5.12.5\Tools\QtCreator\bin\jom.exe install
- msvc编译器:
-
或者选择【项目】->【使用的编译器】->【添加Build步骤】->【Custom Process Step】,输入安装命令,然后编译完成后就可以在path路径下看见lib文件夹了。
2 Qt窗口获取焦点/失去焦点
- 常常需要做窗口失去焦点时自动关闭功能;
- 可以通过重写
void QWidget::focusOutEvent ( QFocusEvent * event )
监听失去焦点事件; - 但是默认情况下
focusOutEvent
不会触发,需要设置setFocusPolicy(...)设置获得焦点的方式
;
3 程序中使用路径的方式和注意事项
4 Qt中使用静态模式
4.1 方式一:Q_GLOBAL_STATIC
程序第一次调用时创建对象。
-
Form.h
#ifndef FORM_H #define FORM_H #include <QWidget> namespace Ui { class Form; } class Form : public QWidget { Q_OBJECT public: explicit Form(QWidget *parent = nullptr); ~Form(); static Form* getInstance(); void showText(QString str); private: Ui::Form *ui; }; #endif // FORM_H
-
Form.cpp
#include "form.h" #include "ui_form.h" Form::Form(QWidget *parent) : QWidget(parent), ui(new Ui::Form) { ui->setupUi(this); } Form::~Form() { delete ui; } Q_GLOBAL_STATIC(Form, instance) // 创建单例对象 Form *Form::getInstance() { return instance; } void Form::showText(QString str) { ui->textEdit->append(str); }
4.2 方式二:静态变量
程序第一次调用时创建对象。
-
Form.cpp
#include "form.h" #include "ui_form.h" Form::Form(QWidget *parent) : QWidget(parent), ui(new Ui::Form) { ui->setupUi(this); } Form::~Form() { delete ui; } Form *Form::getInstance() { static Form instance; // 创建单例对象 return &instance; } void Form::showText(QString str) { ui->textEdit->append(str); }