1. 默认QDialog窗体右下角有个拉伸尺寸的手柄,通过它可以对窗体拉伸大小,这个控件很容易被遗忘但是又经常可以看到,他的名字叫QSizeGrip,可以通过setSizeGripEnabled来启用或者禁用,也可以用qss对外观进行设置。
QSizeGrip {
image:url(:/image/sizegrip.png);
width:10px;
height:10px;
}
  1. 在有些没有opengl环境的Qt开发中,比如一些嵌入式板子为了节省资源没有编译opengl所以不会有opengl相关的头文件,在编译项目过程中可能遇到提示 GLES3/gl3.h: No such file or directory,尽管你的项目中也没有用到opengl的任何东西,那是因为你包含了一个大模块 #include ,而这个大模块中包含了 #include "qopenglwidget.h" ,你需要做的是在引入大模块前面加一行。
//下面两个定义看具体需求调整
#define QT_NO_OPENGL
#define QT_NO_OPENGL_ES_3
#include <QtWidgets>
  1. 可以通过设置过滤机制,将代码中的部分打印类别屏蔽掉,比如只保留qdebug打印的信息,也可以将Qt内部类的警告信息屏蔽,只保留自己程序写的打印信息。
//代码写在main函数最前面
int main(int argc, char *argv[])
{
QLoggingCategory::setFilterRules("*.critical=false");
QApplication a(argc, argv);
} //下面表示将所有的debug打印信息屏蔽
QLoggingCategory::setFilterRules("*.debug=false");
//下面最终打印 222
qDebug() << "111";
qInfo() << "222"; //下面表示将所有的打印信息屏蔽
QLoggingCategory::setFilterRules("*=false"); //下面可以将所有警告提示屏蔽(Qt内部类中出现的警告信息都用的这个qErrnoWarning对应的就是critical)
QLoggingCategory::setFilterRules("*.critical=false"); //支持多个规则写法(有部分警告信息用的qWarning所以也要加进去)
QLoggingCategory::setFilterRules("*.critical=false\n*.warning=false");
  1. 官方的Qt安装包基本上都带了各种高级模块比如浏览器模块webengine以及多媒体模块q,有些嵌入式的环境或者厂家提供好的Qt环境,未必有这些模块,需要单独打命令安装。
//如果找不到音频输入输出设备需要执行下面这个命令
sudo apt-get install libqt5multimedia5-plugins
//也可以一次性安装所有
sudo apt-get install libqt5*
  1. 项目大了以后,经常需要将某些类做成单例类,在整个项目中唯一存在,供多个地方使用,如果一个就一个类需要写成单例模式,那直接写在那个类中即可,如果类多了的话,会发现都是一些重复的定义代码,此时可以考虑用个宏定义,传入类名即可,代码量虽然少了可能绩效低了,但是水平提升了。
#ifndef QUISINGLETON_H
#define QUISINGLETON_H #include <QScopedPointer>
#include <QMutex> #define SINGLETON_DECL(Class) \
public: \
static Class *Instance(); \
private: \
Q_DISABLE_COPY(Class) \
static QScopedPointer<Class> self; #define SINGLETON_IMPL(Class) \
QScopedPointer<Class> Class::self; \
Class *Class::Instance() { \
if (self.isNull()) { \
static QMutex mutex; \
QMutexLocker locker(&mutex); \
if (self.isNull()) { \
self.reset(new Class); \
} \
} \
return self.data(); \
} #endif // QUISINGLETON_H //使用的时候在头文件和实现文件各加一行代码即可
#include "quisingleton.h"
class Form : public QWidget
{
Q_OBJECT SINGLETON_DECL(Form)
} SINGLETON_IMPL(Form)
Form::Form(QWidget *parent) : QWidget(parent), ui(new Ui::Form)
{
ui->setupUi(this);
}

国内站点:https://gitee.com/feiyangqingyun

国际站点:https://github.com/feiyangqingyun

Qt开发经验小技巧256-260的更多相关文章

  1. Qt开发经验小技巧41-50

    如果使用sqlite数据库不想产生数据库文件,可以创建内存数据库. QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE"); ...

  2. Qt开发经验小技巧81-90

    Qt中的QColor对颜色封装的很完美,支持各种转换,比如rgb.hsb.cmy.hsl,对应的是toRgb.toHsv.toCmyk.toHsl,还支持透明度设置,颜色值还能转成16进制格式显示. ...

  3. Qt开发经验小技巧61-70

    很多人问Qt嵌入式平台用哪个好,这里统一回答(当前时间节点2018年):imx6+335x比较稳定,性能高就用RK3288 RK3399,便宜的话就用全志H3,玩一玩可以用树莓派香橙派. 对于大段的注 ...

  4. Qt开发经验小技巧71-80

    在我们使用QList.QStringList.QByteArray等链表或者数组的过程中,如果只需要取值,而不是赋值,强烈建议使用 at() 取值而不是 [] 操作符,在官方书籍<C++ GUI ...

  5. Qt开发经验小技巧51-60

    在某些http post数据的时候,如果采用的是&字符串连接的数据发送,中文解析乱码的话,需要将中文进行URL转码. QString content = "测试中文"; Q ...

  6. Qt开发经验小技巧31-40

    代码判断MSVC编译器版本. if (_MSC_VER == 1800) MSVC++ 14.0 _MSC_VER == 1900 (Visual Studio 2015) MSVC++ 12.0 _ ...

  7. Qt开发经验小技巧21-30

    如果出现Z-order assignment: is not a valid widget.错误提示,用记事本打开对应的ui文件,找到为空的地方,删除即可. 善于利用QComboBox的addItem ...

  8. Qt开发经验小技巧11-20

    获取类的属性 const QMetaObject *metaobject = object->metaObject(); int count = metaobject->propertyC ...

  9. Qt开发经验小技巧1-10

    当编译发现大量错误的时候,从第一个看起,一个一个的解决,不要急着去看下一个错误,往往后面的错误都是由于前面的错误引起的,第一个解决后很可能都解决了. 定时器是个好东西,学会好使用它,有时候用QTime ...

  10. Qt开发经验小技巧合集

    一.开发经验总结 当编译发现大量错误的时候,从第一个看起,一个一个的解决,不要急着去看下一个错误,往往后面的错误都是由于前面的错误引起的,第一个解决后很可能都解决了. 定时器是个好东西,学会好使用它, ...

随机推荐

  1. Linux+PXE+DHCP+TFTP+NFS实现无人值守安装

    一.实验环境:OS:Redhat6.4软件:DHCP服务.TFTP服务.NFS服务硬件:Dell R630服务器两台物理连接图: em1 em1 二.工作原理:服务器通过PXE网卡启动,从dhcp服务 ...

  2. Nginx 服务器 SSL 证书安装部署

    工具:WinSCP.putty 下载证书 cloud.tencent.com_bundle.crt 证书文件 cloud.tencent.com_bundle.pem 证书文件 cloud.tence ...

  3. go:极简上手使用 stretchr/testify 进行mock测试

    库安装 首先,安装 Mock 类生成工具 Mockery: go install github.com/vektra/mockery/v2@v2.45.1 实际上,你也可以手动创建 Mock 类. 生 ...

  4. C#常见的四种经典查找算法

    前言 在编程领域,数据结构与算法是构建高效.可靠和可扩展软件系统的基石.它们对于提升程序性能.优化资源利用以及解决复杂问题具有至关重要的作用.今天大姚给大家分享四种C#中常见的经典查找算法. C#数据 ...

  5. 强化学习环境gym/gymnasium下的atari环境的v0、v4、v5的说明

    声明: 本文是最新版gym-0.26.2下Atari环境的安装以及环境版本v0,v4,v5的说明的部分更新和汇总,可以看作是更新和延续版本. 由于gym已经由openai公司独立出来,虽然开发团队和投 ...

  6. Django框架表单基础

    本节主要介绍一下Django框架表单(Form)的基础知识.Django框架提供了一系列的工具和库来帮助设计人员构建表单,通过表单来接收网站用户的输入,然后处理以及响应这些用户的输入. 6.1.1 H ...

  7. common-dbutils的使用

    1.      介绍 commons-dbutils是Apache组织提供的一个开源 JDBC工具类库,能让我们更简单的使用JDBC.它是一个非常小的类包,花几分钟的时间就能掌握它的使用. 2.    ...

  8. 在vue中使用html2canvas生成图片

    首先,在vue中引入html2canvas,执行命令 npm install --save html2canvas 然后在需要生成图片的页面中引入 import html2canvas from 'h ...

  9. 高性能消息队列之nsq

    NSQ 是实时的分布式消息处理平台,其设计的目的是用来大规模地处理每天数以十亿计级别的消息. NSQ 具有分布式和去中心化拓扑结构,该结构具有无单点故障.故障容错.高可用性以及能够保证消息的可靠传递的 ...

  10. python之pyecharts

    文档:https://pyecharts.org/ 安装: pip install pyecharts 示例: from pyecharts.charts import Bar from pyecha ...