【问题标题】:Qt QML for Android and iOS change colors Systemwide适用于 Android 和 iOS 的 Qt QML 在系统范围内更改颜色
【发布时间】:2014-05-07 16:21:09
【问题描述】:

我正在尝试编写一个深色背景的小应用程序。 为了让生活更轻松,我使用了 Qt 快速控件。

例如工具按钮。 未按下时,ToolButton 的字体为黑色,因此在我的深色背景中不可见。

阅读其他帖子似乎(虽然很难相信)您不能为 ToolButton 或许多其他 Qt 快速控件设置文本颜色(或其他颜色)。 建议的解决方案是对这些元素和/或样式进行完整的复制/粘贴重新编码。 这听起来 Qt / Digia 非常暗淡,很难相信您要“自定义”的第一件事是颜色(前 - 后 - 文本 - 活动 - 非活动等等......)。

那么还有其他方法可以在应用程序范围内更改这些颜色吗? 在 Qt 小部件中,我会修改 QApplication::QPallette 并且只需几行即可完成。

请帮帮我!

尼尔斯

【问题讨论】:

  • 我可以理解,当不清楚如何做某事时令人沮丧,但称编写此代码的开发人员“非常模糊”真的有助于您的问题得到体面的答复吗?
  • 我确实将 Qt / Digia 的做法称为暗淡,并且相信我暗淡是一个敏感词,如果他们按照看起来的方式来做的话。如果您必须添加对任务有用的任何内容,请参阅下面的我的 cmets。不要误会我的意思:我们开发人员可以生成可悲的代码,但主要是公司政策迫使我们这样做(时间压力,更改规格等)。所以要强调一点:我不想侮辱 Digia 开发人员,但可能是控件被“强制”进入版本的方式。证明我错了,给我一个解决问题的好方法,那太好了。 ;-)

标签: qt colors controls qml


【解决方案1】:

你真的试过了吗?你在哪里读到这是不可能的?我没有对调色板做太多,但是搜索“palette qt 5.2”给了我SystemPalette作为第二个结果,它从Qt 4.7开始就存在了。这些属性是只读的,因此您必须在 C++ 中设置调色板。

控件/样式的“完整复制/粘贴”不是必需的,即使不使用SystemPalette

import QtQuick 2.2
import QtQuick.Controls 1.1
import QtQuick.Controls.Styles 1.1

Rectangle {
    width: 400
    height: 400
    color: "#444"

    ToolButton {
        text: "Button"
        style: ButtonStyle {
            label: Text {
                color: "red"
                text: control.text
            }
        }
    }
}

如果您想为多个控件重用一个样式,只需使用它创建一个组件,作为属性或在其自己的 QML 文件中。

【讨论】:

  • 你好,引用你的话:“你真的试过了吗?”。遗憾的是,你的提议不起作用(是的,我试过了)。如果这样做,complete 样式将被覆盖,最终会出现一个带有红色文本的无功能按钮。这就是为什么我说一个复杂的解决方法是复制/粘贴原始样式并添加颜色指令。但这不好,如果需要,这段代码就是一段 cr*p。嗯,移动路演中的 Digia 开发人员暗示说,整个 Qt Control 的东西都是用“热针”完成的,我想这就是结果之一。也许有一个聪明的解决方法。有人吗?
  • 抱歉,忘记了您的调色板评论。如果您查看我最初的问题,我(有点)知道系统调色板。我试过但失败了(对于 QML,而不是 Qt 小部件!你能提供几行与 QML 一起工作的行吗?我所做的是获取 QApplication::palette,修改“ButtonText”的活动颜色组并编写它回来了。这对 QML Buttontext 没有影响。如果你知道得更好,请告诉我。
  • 哇,这一切都使用 Qt 5.3 Beta,但我不认为它在以前的版本中更好......
  • 澄清一下:当你创建一个ButtonStyle 对象时,你不会覆盖任何东西。当您覆盖特定的样式组件时,您就会开始丢失东西。如果您添加一个可编译的示例,说明您使用 QPalette 进行的尝试,这可能会有所帮助,这样我们就可以准确了解您尝试了什么以及为什么它不起作用。
  • 您好!我刚刚再次尝试了您的代码,这次是在桌面上。我将 QML 用于 iOS 应用程序,在那里我看到了“覆盖所有”行为......在桌面上它“几乎”工作(文本对齐有点偏离,不管是谁......)。你有没有在 iOS 或 Android 上尝试过这个?也许它只是在移动设备上出现故障......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-24
  • 1970-01-01
  • 2020-06-14
相关资源
最近更新 更多