千家信息网

Qt如何实现扁平化样式flatui

发表于:2025-12-03 作者:千家信息网编辑
千家信息网最后更新 2025年12月03日,这篇文章主要介绍了Qt如何实现扁平化样式flatui,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、前言对于现在做前端开发人员来说,
千家信息网最后更新 2025年12月03日Qt如何实现扁平化样式flatui

这篇文章主要介绍了Qt如何实现扁平化样式flatui,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

一、前言

对于现在做前端开发人员来说,FlatUI肯定不陌生,最近几年扁平化的设计越来越流行,大概由于现在PC端和移动端的设备的分辨率越来越高,扁平化反而看起来更让人愉悦,而通过渐变色产生的质感色彩反而没有扁平化来得亲切。

Flat UI是基于Bootstrap之上进行二次开发的扁平化前端框架,他提供了动感、时尚的风格色调搭配,简洁、炫丽的功能组件,同时还提供了更为平滑的js交互动画,可以称得上前端扁平化设计框架的优秀代表之一。

既然是扁平化设计框架的优秀代表,当然需要在自己项目中应用应用,本人最早使用VB开发,而后转为C#开发,最后转为Qt开发,都是因为公司项目需要,根据需要不断学习新的编程框架,语言都是相通的,举一反三,以前用C#写的vista时钟控件和vista日历控件,稍微改改就转移成了Qt写的对应控件,非常方便,只要掌握了思想,熟练了一门语言和框架之后,其他的学起来特别快。

Qt中的qss机制,和css极为相似,感觉就是脱胎于css,用qss来实现Qt界面样式不是一般的方便,而是相当的爽,在看到FlatUI这样的精美的扁平化设计样式后,难以抑制手痒痒,就想用qss实现类似的风格。

二、代码思路

QString FlatUI::setPushButtonQss(QPushButton *btn, int radius, int padding,                                    const QString &normalColor,                                    const QString &normalTextColor,                                    const QString &hoverColor,                                    const QString &hoverTextColor,                                    const QString &pressedColor,                                    const QString &pressedTextColor){    QStringList list;    list.append(QString("QPushButton{border-style:none;padding:%1px;border-radius:%2px;color:%3;background:%4;}")                .arg(padding).arg(radius).arg(normalTextColor).arg(normalColor));    list.append(QString("QPushButton:hover{color:%1;background:%2;}")                .arg(hoverTextColor).arg(hoverColor));    list.append(QString("QPushButton:pressed{color:%1;background:%2;}")                .arg(pressedTextColor).arg(pressedColor));    QString qss = list.join("");    btn->setStyleSheet(qss);    return qss;}QString FlatUI::setLineEditQss(QLineEdit *txt, int radius, int borderWidth,                                  const QString &normalColor,                                  const QString &focusColor){    QStringList list;    list.append(QString("QLineEdit{border-style:none;padding:3px;border-radius:%1px;border:%2px solid %3;}")                .arg(radius).arg(borderWidth).arg(normalColor));    list.append(QString("QLineEdit:focus{border:%1px solid %2;}")                .arg(borderWidth).arg(focusColor));    QString qss = list.join("");    txt->setStyleSheet(qss);    return qss;}QString FlatUI::setProgressQss(QProgressBar *bar, int barHeight,                                     int barRadius, int fontSize,                                     const QString &normalColor,                                     const QString &chunkColor){    QStringList list;    list.append(QString("QProgressBar{font:%1pt;background:%2;max-height:%3px;border-radius:%4px;text-align:center;border:1px solid %2;}")                .arg(fontSize).arg(normalColor).arg(barHeight).arg(barRadius));    list.append(QString("QProgressBar:chunk{border-radius:%2px;background-color:%1;}")                .arg(chunkColor).arg(barRadius));    QString qss = list.join("");    bar->setStyleSheet(qss);    return qss;}QString FlatUI::setSliderQss(QSlider *slider, int sliderHeight,                                const QString &normalColor,                                const QString &grooveColor,                                const QString &handleBorderColor,                                const QString &handleColor){    int sliderRadius = sliderHeight / 2;    int handleWidth = (sliderHeight * 3) / 2 + (sliderHeight / 5);    int handleRadius = handleWidth / 2;    int handleOffset = handleRadius / 2;    QStringList list;    list.append(QString("QSlider::horizontal{min-height:%1px;}").arg(sliderHeight * 2));    list.append(QString("QSlider::groove:horizontal{background:%1;height:%2px;border-radius:%3px;}")                .arg(normalColor).arg(sliderHeight).arg(sliderRadius));    list.append(QString("QSlider::add-page:horizontal{background:%1;height:%2px;border-radius:%3px;}")                .arg(normalColor).arg(sliderHeight).arg(sliderRadius));    list.append(QString("QSlider::sub-page:horizontal{background:%1;height:%2px;border-radius:%3px;}")                .arg(grooveColor).arg(sliderHeight).arg(sliderRadius));    list.append(QString("QSlider::handle:horizontal{width:%3px;margin-top:-%4px;margin-bottom:-%4px;border-radius:%5px;"                        "background:qradialgradient(spread:pad,cx:0.5,cy:0.5,radius:0.5,fx:0.5,fy:0.5,stop:0.6 %1,stop:0.8 %2);}")                .arg(handleColor).arg(handleBorderColor).arg(handleWidth).arg(handleOffset).arg(handleRadius));    //偏移一个像素    handleWidth = handleWidth + 1;    list.append(QString("QSlider::vertical{min-width:%1px;}").arg(sliderHeight * 2));    list.append(QString("QSlider::groove:vertical{background:%1;width:%2px;border-radius:%3px;}")                .arg(normalColor).arg(sliderHeight).arg(sliderRadius));    list.append(QString("QSlider::add-page:vertical{background:%1;width:%2px;border-radius:%3px;}")                .arg(grooveColor).arg(sliderHeight).arg(sliderRadius));    list.append(QString("QSlider::sub-page:vertical{background:%1;width:%2px;border-radius:%3px;}")                .arg(normalColor).arg(sliderHeight).arg(sliderRadius));    list.append(QString("QSlider::handle:vertical{height:%3px;margin-left:-%4px;margin-right:-%4px;border-radius:%5px;"                        "background:qradialgradient(spread:pad,cx:0.5,cy:0.5,radius:0.5,fx:0.5,fy:0.5,stop:0.6 %1,stop:0.8 %2);}")                .arg(handleColor).arg(handleBorderColor).arg(handleWidth).arg(handleOffset).arg(handleRadius));    QString qss = list.join("");    slider->setStyleSheet(qss);    return qss;}QString FlatUI::setRadioButtonQss(QRadioButton *rbtn, int indicatorRadius,                                     const QString &normalColor,                                     const QString &checkColor){    int indicatorWidth = indicatorRadius * 2;    QStringList list;    list.append(QString("QRadioButton::indicator{border-radius:%1px;width:%2px;height:%2px;}")                .arg(indicatorRadius).arg(indicatorWidth));    list.append(QString("QRadioButton::indicator::unchecked{background:qradialgradient(spread:pad,cx:0.5,cy:0.5,radius:0.5,fx:0.5,fy:0.5,"                        "stop:0.6 #FFFFFF,stop:0.7 %1);}").arg(normalColor));    list.append(QString("QRadioButton::indicator::checked{background:qradialgradient(spread:pad,cx:0.5,cy:0.5,radius:0.5,fx:0.5,fy:0.5,"                        "stop:0 %1,stop:0.3 %1,stop:0.4 #FFFFFF,stop:0.6 #FFFFFF,stop:0.7 %1);}").arg(checkColor));    QString qss = list.join("");    rbtn->setStyleSheet(qss);    return qss;}QString FlatUI::setScrollBarQss(QWidget *scroll, int radius, int min, int max,                                   const QString &bgColor,                                   const QString &handleNormalColor,                                   const QString &handleHoverColor,                                   const QString &handlePressedColor){    //滚动条离背景间隔    int padding = 0;    QStringList list;    //handle:指示器,滚动条拉动部分 add-page:滚动条拉动时增加的部分 sub-page:滚动条拉动时减少的部分 add-line:递增按钮 sub-line:递减按钮    //横向滚动条部分    list.append(QString("QScrollBar:horizontal{background:%1;padding:%2px;border-radius:%3px;min-height:%4px;max-height:%4px;}")                .arg(bgColor).arg(padding).arg(radius).arg(max));    list.append(QString("QScrollBar::handle:horizontal{background:%1;min-width:%2px;border-radius:%3px;}")                .arg(handleNormalColor).arg(min).arg(radius));    list.append(QString("QScrollBar::handle:horizontal:hover{background:%1;}")                .arg(handleHoverColor));    list.append(QString("QScrollBar::handle:horizontal:pressed{background:%1;}")                .arg(handlePressedColor));    list.append(QString("QScrollBar::add-page:horizontal{background:none;}"));    list.append(QString("QScrollBar::sub-page:horizontal{background:none;}"));    list.append(QString("QScrollBar::add-line:horizontal{background:none;}"));    list.append(QString("QScrollBar::sub-line:horizontal{background:none;}"));    //纵向滚动条部分    list.append(QString("QScrollBar:vertical{background:%1;padding:%2px;border-radius:%3px;min-width:%4px;max-width:%4px;}")                .arg(bgColor).arg(padding).arg(radius).arg(max));    list.append(QString("QScrollBar::handle:vertical{background:%1;min-height:%2px;border-radius:%3px;}")                .arg(handleNormalColor).arg(min).arg(radius));    list.append(QString("QScrollBar::handle:vertical:hover{background:%1;}")                .arg(handleHoverColor));    list.append(QString("QScrollBar::handle:vertical:pressed{background:%1;}")                .arg(handlePressedColor));    list.append(QString("QScrollBar::add-page:vertical{background:none;}"));    list.append(QString("QScrollBar::sub-page:vertical{background:none;}"));    list.append(QString("QScrollBar::add-line:vertical{background:none;}"));    list.append(QString("QScrollBar::sub-line:vertical{background:none;}"));    QString qss = list.join("");    scroll->setStyleSheet(qss);    return qss;}

三、效果图

感谢你能够认真阅读完这篇文章,希望小编分享的"Qt如何实现扁平化样式flatui"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!

扁平 框架 部分 开发 样式 篇文章 设计 前端 控件 优秀 代表 同时 按钮 语言 越来越 项目 风格 C# 越来 学习 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 强化网络安全责任制 金山网络安全一体化 华为云西北地区服务器怎么选 ncbi所有数据库简 崇明区数据软件开发报价表 周口订单管理软件开发 台州天翼网络技术有限公 服务器被网易封了怎么办 数据库完整性和独立性的异同 软件开发公司申请税收优惠 华为手机激活显示网络服务器繁忙 电子商务网站数据库设计er图 网络安全支付创业计划书 数据库管理系统什么是实体 海信网络技术废标 构建网络安全机制的途径是 数据库中的业务逻辑是什么意思 服务器只能访问80个端口 速达数据库查询分析器在哪 2019网络安全宣传日 excel匹配出两列数据库 软件开发的指导阶段 如何在花雨庭服务器装材质包 csgo陀螺专用服务器指令 最挣钱的是软件开发 网络安全病毒论文 庐阳区综合网络技术咨询介绍 我的世界梦想堡垒服务器注册密码 QT更改项目版本管理服务器 企业软件开发价钱是多少
0