4.QT换肤功能--Apple的学习笔记

一,前言

在3.QT悬浮窗口及TAB窗口--Apple的学习笔记基础上,我继续优化界面,以前了解过qss可以向css一样设置界面美观的功能,反正将界面美化通过API实现到code中我觉得不太好,我情愿用qss的方式。后来了解到qml,以为qml是升级版的qss,后来了解到qml比qss强大,它可以代替c++。主要用来做原型设计吧,设计师用QT design stdio生成的就是qml,然后程序员看懂qml后转换为c++逻辑。所以我本次仅在之前工程基础上添加换肤美化功能。

二,需求

刻意练习:实现换肤功能

三,qss入门

qss入门比较简单,会css就会qss。网上资料一大堆。最关键的就是颜色搭配学,这块我网上搜索了下,居然有些非常棒的配色参考网站。然后搜索了下别人的qss,搜索到了别人打包的现成qss,直接拿来用了。主要用来体验下换肤功能。
本次练习并不涉及到paint重绘,对我没有难度。只是让我从空白开始写的话,哪些关键参数需要设置并不清楚,看了别人的qss,基本上了解了些。关键代码如下

void MainWindow::loadskin(QString path)
{
    QFile qss(path);
    if( qss.open(QFile::ReadOnly))
    {
        QString style = QLatin1String(qss.readAll());
        this->setStyleSheet(style);
        qss.close();
    }
    else
    {
        qDebug("Open failed");
    }
}

void MainWindow::on_changeSkin()
{
    if(m_skincnt%2)
    {
        loadskin(":./qss/Ubuntu.qss");
    }
    else
    {
        loadskin(":./qss/AMOLED.qss");
    }
    m_skincnt++;
}

网上还看到别人稍微复杂点的qss。指定方法,并且还关联图片

QTimeEdit::down-button,QDateEdit::down-button,QDateTimeEdit::down-button,QDoubleSpinBox::down-button,QSpinBox::down-button{
image:url(:/qss/darkblack/add_bottom.png);
width:10px;
height:10px;
padding:0px 5px 2px 0px;
}

四,效果

image.png

五,小结

UI美化一下,感觉更像一个完整的工具了。添加了换肤功能后,感觉更加高大上了。哈哈~

你可能感兴趣的:(4.QT换肤功能--Apple的学习笔记)