这个问题有点具体,但我一直无法找到有同样问题的人或问题的清洁解决方案。
我正在创建一个Qt Quick程序,我想在QtWidgets中使用QListView。 This QtWidgets program有三个这样的视图,带有可检查的项目(这是可选的:并非所有QListView都有可检查项目。)
因为Qt Quick Components似乎没有QListView等价物,所以我开始从现有组件中创建自己的组件。结果就是......呃。它看起来像this,但并不完全以同样的方式表现。单击项目的文本/空白区域检查项目,而不是突出显示该项目。边界只是丑陋,并没有出现在GTK主题的环境中。它也不遵守自定义桌面主题,因为项目的背景总是是白色的。
此自定义组件的代码相当简短,如下所示:
import QtQuick 2.4
import QtQuick.Controls 1.3
// GroupBox creates a border... most of the time. Not in GTK envs
GroupBox {
id: root
property var model: null
// This wraps the ListView up with a scrollbar
ScrollView {
anchors.fill: parent
ListView { // This is the view component
anchors.fill: parent
model: root.model
// This is the white box that the CheckBox is drawn on
delegate: Rectangle {
width: parent.width
height: box.height
// This is the actual item
CheckBox {
id: box
anchors.fill: parent
text: thing // `thing` is just a placeholder value from the model
}
}
}
}
}
答案 0 :(得分:0)
使用QApplication
代替QGuiApplication
。它将要求您添加小部件支持(并运送Qt小部件库)。这样,Qt Quick Components将自动访问更多系统主题,如文本选择中的背景颜色。
此外,SystemPalette将为您提供一系列本机颜色,您可以根据需要使用。
使用QGuiApplication
不满意系统集成:
使用QApplication
的良好集成: