《QDebug 2022年10月》

一、Qt Widgets 问题交流

1.QLabel用样式表属性设置文本

在刘典武大佬宝典中看到的有趣的内容,可以用样式表属性设置QLabel的文本

//常规办法
ui->label->setText("hello");
//取巧办法
ui->label->setProperty("text", "hello");
//属性大法
ui->label->setStyleSheet("qproperty-text:hello;");

二、Qt Quick 问题交流

三、其他

1.CMake和qmake判断Qt版本

1.1 CMake:(VERSION_LESS/EQUAL/GREATER三种比较)

if(QT_VERSION VERSION_LESS 5.15.0)
    message("< Qt5.15")
else()
    message(">= Qt5.15")
endif()

1.2 qmake: https://doc-snapshots.qt.io/qt5-5.15/qmake-test-function-reference.html

Qt5.10 新增 versionAtLeast 和 versionAtMost 函数

if(versionAtLeast(QT_VERSION, 5.15.0)){
    message(">= Qt5.15")
}else{
    message("< Qt5.15")
}

在更低的版本中可以参考 qtcreator.pri 中定义的函数:(isEqual/lessThan/greaterThan三种比较)

defineTest(minQtVersion) {
    maj = $$1
    min = $$2
    patch = $$3
    isEqual(QT_MAJOR_VERSION, $$maj) {
        isEqual(QT_MINOR_VERSION, $$min) {
            isEqual(QT_PATCH_VERSION, $$patch) {
                return(true)
            }
            greaterThan(QT_PATCH_VERSION, $$patch) {
                return(true)
            }
        }
        greaterThan(QT_MINOR_VERSION, $$min) {
            return(true)
        }
    }
    greaterThan(QT_MAJOR_VERSION, $$maj) {
        return(true)
    }
    return(false)
}

if(minQtVersion(5,15,0)){
    message("ok")
}else{
    message("fail")
}

2.Qt6中QSettings默认utf8,移除了setIniCodec接口

    QSettings setting("config.ini", QSettings::IniFormat);
    //setting.setIniCodec("utf-8"); //Qt6移除该接口,且默认为utf8
    setting.setValue("分组/键","中文测试");

utf8时存储的内容:

[%U5206%U7EC4]
%U952E=中文测试

Qt未设置utf8时存储的内容:

[%U5206%U7EC4]
%U952E=\x4e2d\x6587\x6d4b\x8bd5

可见,分组名和键始终不能直接写中文,用的unicode编码

猜你喜欢

转载自blog.csdn.net/gongjianbo1992/article/details/127625065