Qt主题风格设置

1、问题:Qt自启动会默认使用Desktop Setting 的主题,显得很是难看。


2、qtonfig工具直接设置Qt主题风格,解决了难看的问题。

$qtconfig



3、博文分享

http://doc.qt.digia.com/4.5/qtconfig.html

http://adam8157.info/blog/2010/08/set-qt-theme/

设置Qt主题

AUG 15TH, 2010 | COMMENTS

非KDE环境下的Qt4程序默认主题, 实在是丑.

我有两个比较常用的Qt程序: SMPlayer和VirtualBox, 自从它俩升级至Qt4后我就一直在忍受那个丑陋的默认主题, 而今天, 终于忍不住动手调整了下.

方法嘛, Debian用户安装qt4-qtconfig, 运行qtconfig就是了, 一目了然. 当然, 对于我来说, 装这么个东西外加那么多依赖是不可以接受的, 目的只是为了搞清楚配置文件的位置和写法, 呵呵.

废话少说, 配置文件位于~/.config/Trolltech.conf

[Qt]
style=Cleanlooks
font="Sans Serif,9,-1,5,50,0,0,0,0,0"

最主要的主题和字体配置语句如上, Cleanlooks是默认带的, 个人觉得挺好. 另外, 指定主题为”GTK+”则会使用QGtkStyle特性让Qt使用当前的Gtk主题, 可惜我这里会报错”QGtkStyle was unable to detect the current GTK+ theme.”


好了, 可以把qt4-qtconfig卸载了.

 Aug 15th, 2010


### 如何在 Qt 中更改或自定义应用程序主题Qt 开发中,可以通过多种方式实现应用程序主题的定制化。以下是关于如何设置和自定义 Qt 应用程序主题的具体方法。 #### 使用 QQuickStyle 自定义样式 `QQuickStyle` 是一个用于定义 Qt Quick 应用程序外观的核心工具。开发者能够通过调整颜色、字体和其他视觉属性来改变应用的整体风格。为了创建自定义 `QQuickStyle` 样式,可以按照以下流程操作: 1. **创建新的 C++ 类库项目** 新建工程时选择 Library 并确保选择了 C++ 库作为基础模板[^2]。此过程会生成一个新的动态链接库 (DLL),其中包含自定义样式的逻辑。 2. **编写自定义控件渲染代码** 在新项目的源码文件中实现具体的绘制功能。这些代码通常涉及重写标准组件(如按钮、滑块等)的行为与表现形式[^1]。 3. **配置 .pro 文件支持插件加载路径** 修改 `.pro` 工程配置文件以指定编译后的 DLL 输出位置。例如,可将默认目标目录更改为当前工作区下的子文件夹: ```plaintext DESTDIR = $$PWD/bin ``` 这一步并非强制要求,但如果未执行,则需手动查找由 Qt 定义的标准安装路径下生成的目标文件。 4. **注册并启用自定义样式** 编辑 main.cpp 或其他初始化入口处调用静态成员函数 `QQuickStyle::setStyle()` 来激活所设计的新主题方案。 ```cpp int main(int argc, char *argv[]) { QApplication app(argc, argv); // 设置自定义样式名 QQuickStyle::setStyle("CustomTheme"); QQmlApplicationEngine engine; const QUrl url(u"qrc:/main.qml"_qs); QObject::connect(&engine, &QQmlApplicationEngine::objectCreated, &app, [url](QObject *obj, const QUrl &objUrl) { if (!obj && url == objUrl) QCoreApplication::exit(-1); }, Qt::QueuedConnection); engine.load(url); return app.exec(); } ``` #### 利用 Qt Style Sheets 实现快速美化界面 对于不需要深入控制底层绘图机制的情况,推荐采用 CSS 风格语法——即所谓的 “Qt Style Sheets”。这种方式允许直接为各个 UI 组件分配预设好的格式选项而无需额外编码。 示例片段展示了怎样利用 stylesheet 属性统一设定窗口背景以及按钮文字的颜色搭配效果: ```qml Window { width: 640 height: 480 visible: true title: qsTr("Styled Application") Rectangle { anchors.fill: parent color: "#f0f0f0" Button { text: "Click Me!" font.pixelSize: 18 background: Rectangle { radius: 5 gradient: Gradient { GradientStop { position: 0.0; color: "#aaddff"; } GradientStop { position: 1.0; color: "#ffffff"; } } border.color: "#cccccc" border.width: 1 } onClicked: console.log("Button clicked!") } } } ``` 上述例子不仅体现了灵活运用渐变填充技术提升美观度的可能性,同时也示范了嵌套结构里局部覆盖全局规则的应用场景。 #### 更改 EXE 图标增强用户体验一致性 最后值得一提的是,在完成整体配色布局之后还可以进一步优化最终产物的表现力—比如替换掉原始空白图标为更具代表性的图形资源。具体做法只需简单编辑对应的`.pro`脚本增加一行指令指向实际使用的图像素材即可[^4]: ```makefile RC_ICONS = custom_icon.ico ``` 同时注意保持该 ICO 文件位于同一级或者上级目录便于构建系统顺利检索定位[^5]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值