我想创建一个可以扩展的用户界面qtquick2,它包含一些桌面组件。如此blogpost中所述,qml / qtquick2的默认呈现应使用距离字段而不是本机文本呈现。我试图扩展qt快速控制。结果相当令人失望。我正在测试ubuntu 64和qt-5.1.1。控件上的文字看起来很糟糕,但标准qml元素(Text / TextEdit)中的所有文本在缩放时看起来都很好。
这让我认为原生渲染是桌面组件的默认渲染。这可以改变吗?
答案 0 :(得分:3)
Qt Quick Controls的渲染类型将在Qt 5.2中使用样式,例如在TextArea
:
TextArea {
/* ... */
style: TextAreaStyle {
renderType: Text.QtRendering
}
}
支持的渲染类型包括:
Text.QtRendering
Text.NativeRendering
(默认)请参阅TextArea.qml,TextAreaStyle.qml。
对于Button
和ButtonStyle
,没有公共接口可以直接在Qt 5.2中设置渲染类型。但你可以做的是用你自己的文本组件覆盖label
:
Button {
id: theButton
/* ... */
style: ButtonStyle {
label: Item {
implicitWidth: row.implicitWidth
implicitHeight: row.implicitHeight
property var __syspal: SystemPalette {
colorGroup: theButton.enabled ?
SystemPalette.Active : SystemPalette.Disabled
}
Row {
id: row
anchors.centerIn: parent
spacing: 2
Image {
source: theButton.iconSource
anchors.verticalCenter: parent.verticalCenter
}
Text {
renderType: Text.NativeRendering /* Change me */
anchors.verticalCenter: parent.verticalCenter
text: theButton.text
color: __syspal.text
}
}
}
}
此代码的灵感来自ButtonStyle.qml的默认label
组件,经过修改和未经测试。
答案 1 :(得分:1)
我认为您不能更改Qt组件中的文本呈现,因为它们是明确用于桌面应用程序的。
例如,在TextArea中,TextEdit中没有renderType
。
在QtDesktopComponents页面上我另一个提示:
您必须将QGuiApplication更改为QApplication。这是因为组件依赖于某些特定于窗口小部件的类(如QStyle)来进行本机渲染。