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目录
网友评论