Qt 杂录

UUID

#include <QUuid>
QString uuid = QUuid::createUuid().toString().replace("{", "").replace("}", "").replace("-", "").toUpper();

MD5

#include <QCryptographicHash>
QString md5 = QCryptographicHash::hash("Biao", QCryptographicHash::Md5).toHex();

随机数

Qt5.10后推荐使用 QRandomGenerator 生成随机数,而不再推荐qrand():

#include <QRandomGenerator>
QRandomGenerator::global()->generate();   //(0, MAX_INT)
QRandomGenerator::global()->bounded(100); //(0, 100)

QString获取中文字符串长度

QString str("ab中文");
int len = str.length();              //len为4
len = str.toLocal8Bit().length();    //len为8,UTF-8编码下QString中一个中文占3个字节

connect使用有重载的信号或槽函数

方法一: 使用static_cast<>()进行强制类型转换

方法一

以QSpinBox为例:
QSpinBox有一个重载信号void valueChanged(int i)和void valueChanged(const QString &text)。

使用connect(mySpinBox, &QSpinBox::valueChanged, mySlider, &QSlider::setValue)会编译报错,
因为编译器不知道该使用哪一个valueChanged信号。

正确使用

connect(mySpinBox, SIGNAL(valueChanged(int)), mySlider, SLOT(setValue(int));
或
connect(mySpinBox, static_cast<void (QSpinBox::*)(int)>(&QSpinBox::valueChanged), mySlider, &QSlider::setValue);

方法二

方法二

使用QOverload<>::of()或者qOverload<>()(需要C++14支持)
例如:connect(mySpinBox,QOverload<int>::of(&QSpinBox::valueChanged), mySlider,&QSlider::setValue);

去除QLineEdit、QTextEdit等右键菜单

setContextMenuPolicy(Qt::NoContextMenu);

TabWidget去除选项卡的关闭按钮

tabWidget->tabBar()->setTabButton(0, QTabBar::RightSide, nullptr);

msvc-version.conf loaded but QMAKE_MSC_VER isn’t set解决方案

删除和项目有关的所有.qmake.stash以及构建目录(包含同级、上级、上上级,只要相关的.qmake.stash)

设置程序执行时库的查找路径

pro文件中添加
QMAKE_LFLAGS += -Wl,-rpath,\'\$\$ORIGIN\'/lib/              //库查找目录为可执行程序目录下的lib目录
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值