应用软件在「ous20和MAcOS10.14下」显示应用不同的QStyle「即:所有控件的样式换肤」

简 述: 应用软件在「ous20 和 MAcOS10.14 下」显示应用不同的QStyle「即:所有控件的样式换肤」, 自定义风格 QStyle:显示当前 OS 的所有支持的风格Style;



起初背景:

创建一个简单地🌰「Qt 的工程项目」,在 uos20 和 MacOS10.14.6 系统上面都跑一边,简单的摆放几个控件在窗口上面,用来查看使用不同的 Style 的时候,用来表现不同的效果,给人以以直观的软件换肤 感受。


QStyleFactory 和 QStyle 讲解:

QStyleFactory:看做很多风格模式的集合

QStyle:看做具体操作系统的里面有几种默认的风格

这次的源码讲解比较少,其中主要就是这一段 QStyleFactoryqApp->setStyle()的使用

//查看当前 OS 下的所有支持风格
QStringList listStyle = QStyleFactory::keys();
foreach(QString val, listStyle)
  qDebug()<<val<<"  ";

//若为 OS 自带的QStyle,则
qApp->setStyle("系统自带风格");

//若为自定义新的QStyle,则
qApp->setStyle(QStyleFactory::create("自定义风格")
  • 在 UOS20 下,该系统支持的风格如下:

    • “chameleon”
    • “dsemilight”
    • “dsemidark”
    • “dlight”
    • “ddark”
    • “Windows”
    • “Fusion”
  • 在 MacOS10.14.6 下,该系统支持的风格如下:

    • “macintosh”
    • “Windows”
    • “Fusion”

改变 OS 高亮色(活动色):

在 MacOS 和 uos(deepin) 里面是可以改变系统的高亮色 「有时候也被称之为活动色 」,而默认一般都是蓝色的,且 windows 里面也是在设置里面修改。另外两个其修改设置的地方如下图:

运行效果:

先上一个最终的运行效果图:

在 UOS20 下效果图:

chameleon:
dsemilight:
dsemidark:
dlight:
ddark:
Windows:
Fusion:

在 MacOS10.14.6 下效果图:

macintosh:
Windows:
Fusion:

核心源码:

void Widget::init()
{
    QTableWidget *table = new QTableWidget(10, 10, this);
    table->move(10, 10);

    QScrollBar *scrollBarH = new QScrollBar(this);
    scrollBarH->move(300, 50);
    scrollBarH->setRange(0, 100);
    scrollBarH->setValue(34);
    scrollBarH->resize(380, 20);
    scrollBarH->setOrientation(Qt::Horizontal);

    QScrollBar *scrollBarV = new QScrollBar(this);
    scrollBarV->move(50, 250);
    scrollBarV->setRange(0, 100);
    scrollBarV->setValue(67);
    scrollBarV->resize(20, 380);
    scrollBarV->setOrientation(Qt::Vertical);

    QProgressBar* progreH = new QProgressBar(this);
    progreH->move(300, 100);
    progreH->resize(250, 40);
    progreH->setValue(37);
    progreH->setOrientation(Qt::Horizontal);

    QProgressBar* progreV = new QProgressBar(this);
    progreV->move(100, 300);
    progreV->resize(40, 250);
    progreV->setValue(67);
    progreV->setOrientation(Qt::Vertical);

    int i = 0;
    QStringList listStyle = QStyleFactory::keys();
    foreach(QString val, listStyle) {   //打印当前系统支持的系统风格
        qDebug()<<val<<"  ";
        QPushButton *btn = new QPushButton(val, this);
        btn->move(this->rect().right() - 100, this->rect().top() + i++ * 40);
        connect(btn, &QPushButton::clicked, this, [=](){
            qApp->setStyle(val);
        });
    }

}

源码下载:

https://github.com/touwoyimuli/QtExamples 【QtMyStyleEx/QtExample01/QtStyleEx】

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

偕臧x

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值