当前位置: 首页 > ops >正文

Qt开发经验 --- 避坑指南(7)

文章目录

    • @[toc]
      • 1 程序依赖文件自动安装
      • 2 Qt窗口获取焦点/失去焦点
      • 3 程序中使用路径的方式和注意事项
      • 4 Qt中使用静态模式
        • 4.1 方式一:Q_GLOBAL_STATIC
        • 4.2 方式二:静态变量

更多精彩内容
👉内容导航 👈
👉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
  • 或者选择【项目】->【使用的编译器】->【添加Build步骤】->【Custom Process Step】,输入安装命令,然后编译完成后就可以在path路径下看见lib文件夹了。

    在这里插入图片描述

2 Qt窗口获取焦点/失去焦点

  • 常常需要做窗口失去焦点时自动关闭功能;
  • 可以通过重写void QWidget::focusOutEvent ( QFocusEvent * event )监听失去焦点事件;
  • 但是默认情况下focusOutEvent不会触发,需要设置setFocusPolicy(...)设置获得焦点的方式

3 程序中使用路径的方式和注意事项

  • Qt 程序使用路径方式和注意事项

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_OBJECTpublic: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);
    }


http://www.xdnf.cn/news/4664.html

相关文章:

  • 【链表扫盲】FROM GPT
  • P2392 kkksc03考前临时抱佛脚
  • mongodb升级、改单节点模式
  • 为什么虚拟环境下包找错路径?
  • 堡塔云WAF免费WEB防火墙,从搭建到应用
  • k8s监控方案实践(一):部署Prometheus与Node Exporter
  • 排序算法-冒泡排序
  • [数据库之十三] 数据库索引之散列索引
  • 如何在macOS上通过SSHFS挂载远程文件系统
  • 室内无人机自主巡检解决方案-自主方案
  • 批量清洗与修改 YOLO 标签:删除与替换指定类别
  • uniapp index.html怎么改都不生效
  • Redis如何实现分布式锁
  • 论文学习:《RNADiffFold:使用离散扩散模型的生成RNA二级结构预测》
  • 中级网络工程师知识点2
  • 【se-res模块学习】结合CIFAR-10分类任务学习
  • 嵌入式学习--江协51单片机day3
  • 问题 | 当前计算机视觉迫切解决的问题
  • spring中RequestContextHolder
  • Wubuntu安装时创建分区失败解决方案
  • 预渲染 Prerender
  • 图漾相机——Sample_V2示例程序(待补充)
  • 【UltralyticsYolo11图像分类完整项目-03】Onnx版Cpu预测C++实现
  • 解构语言模型推理过程,超越最终答案:通过分析子思考路径提升大语言模型推理准确性的方法研究
  • FastExcel 本地开发和Linux上上传Resource文件的差异性
  • 直接用字符串方式 split(“。“) 来切句,虽然能把句子拆开,但无法和 BERT 模型的 token 位置对应(embedding 用不上)
  • 高炉炼铁:构建全流程工艺可视化管控体系
  • Redis最新入门教程
  • 多返回值(C++)
  • CF后台如何设置TCP 和 UDP 端口?