我正在使用 QtQuick 2.15 和 Qt 6.2.1 發布的 QT 檔案中用作示例的自定義復選框:
CheckBox {
id: control
text: qsTr("CheckBox")
checked: true
indicator: Rectangle {
implicitWidth: 26
implicitHeight: 26
x: control.leftPadding
y: parent.height / 2 - height / 2
radius: 3
border.color: control.down ? "#17a81a" : "#21be2b"
Rectangle {
width: 14
height: 14
x: 6
y: 6
radius: 2
color: control.down ? "#17a81a" : "#21be2b"
visible: control.checked
}
}
contentItem: Text {
text: control.text
font: control.font
opacity: enabled ? 1.0 : 0.3
color: control.down ? "#17a81a" : "#21be2b"
verticalAlignment: Text.AlignVCenter
leftPadding: control.indicator.width control.spacing
}
}
但是,此示例不起作用。這就是我所看到的:
已檢查
檢查并懸停
未選中和懸停
沒有任何
我想知道是否有任何解決方法。我見過其他人有同樣的問題但沒有解決方案
uj5u.com熱心網友回復:
這與QTBUG-95589的問題相同:不應自定義原生樣式。定制參考說:
注意:macOS 和 Windows 樣式不適合自定義。相反,建議始終將自定義控制元件基于所有平臺上可用的單一樣式,例如基本樣式、融合樣式、想象樣式、材質樣式、通用樣式。通過這樣做,您可以保證無論應用程式使用哪種樣式運行,它看起來總是一樣的。例如:
有兩種解決方案:
- 使用不同的風格。我已經鏈接到運行時樣式選擇檔案,因為它是選擇樣式的最簡單和最常用的方法,但如果您的應用程式只使用一種樣式,您也可以使用編譯時樣式選擇。
- 完全從頭開始設定控制元件樣式。任何時候您使用 QtQuick.Templates 中的型別,都不會應用樣式,因此您無需擔心正在使用哪種樣式。
在 Qt 6 中,添加了本機樣式,同時進行了更改以使默認樣式(即,如果未指定則使用的樣式)成為特定于平臺的樣式。因此,如果您沒有在例如 Windows 上指定樣式,您將獲得本機 Windows 樣式。不幸的是,這在自定義控制元件時會導致問題,因為本機樣式不是為自定義而設計的。
最終目標是讓 Qt Creator在檢測到用戶正在自定義原生樣式時警告用戶。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/496983.html
上一篇:如何處理胖介面?