作業中の新しいqt5.7アプリケーションにいくつかのスタイルを適用しようとしていますが、以下はまったく機能しません。次のエラーが発生します。qrc:/SignInView.qml:67存在しないプロパティ "style"に割り当てることができません。同じ理由で、デザインモードで編集できません。
import QtQuick 2.7
import QtQuick.Controls 2.0
import QtQuick.Layouts 1.1
import QtQuick.Controls.Styles 1.4
Page {
id: page1
ColumnLayout {
id: columnLayout1
height: 100
anchors.right: parent.right
anchors.left: parent.left
anchors.top: parent.top
Label {
text: qsTr("Label")
font.pointSize: 16
horizontalAlignment: Text.AlignHCenter
Layout.fillWidth: true
}
Image {
id: image1
width: 200
height: 200
Layout.alignment: Qt.AlignHCenter | Qt.AlignTop
fillMode: Image.PreserveAspectCrop
anchors.horizontalCenter: parent
source: "qrc:/qtquickplugin/images/template_image.png"
Button {
id: button1
text: qsTr("Button")
anchors.bottomMargin: 10
anchors.rightMargin: 10
anchors.bottom: parent.bottom
anchors.right: parent.right
}
}
Rectangle {
id: field1
width: 200
height: 40
color: "#ffffff"
Layout.fillWidth: true
Label {
id: label1
text: qsTr("Full Name")
anchors.topMargin: 0
anchors.left: parent.left
anchors.leftMargin: 5
anchors.top: parent.top
}
TextField {
style: TextFieldStyle {
textColor: "black"
background: Rectangle {
radius: 2
implicitWidth: 100
implicitHeight: 24
border.color: "#333"
border.width: 1
}
}
}
}
}
}
私はこの例に従おうとしています:
http://doc.qt.io/qt-5/qml-qtquick-controls-styles-textfieldstyle.html
Qt Creatorのstyle属性で失敗し、styleが存在しないというエラーが発生します。ライブラリがロードされていないか、設定した環境が原因であると思います。ボタンや他の場所にもスタイルがありません。インポートがあればうまくいくと思いましたが、そうではありません。
SOに関連する問題はここにあります: QML-TextFieldフォントサイズを変更する方法 しかしここではうまくいくようです。
Qt Quick Controls 2には、TextField::style
のようなプロパティはありません。一般に、Qtクイックコントロール1のスタイルオブジェクトをQtクイックコントロール2で使用する方法はありません。Qtクイックコントロールの2つのメジャーバージョン間のAPIには互換性がありません。詳細については、次のドキュメントページを参照してください。
新しいAPI互換のメジャーバージョンが導入されました。これは、Qt Quick Controls1のローダーベースのアーキテクチャを適度にうまく機能させる方法が基本的にないためです。したがって、Component
sの動的ロードはすべてQtクイックコントロール2で廃止されました。動的にロードされたスタイルオブジェクトによって提供されるComponent
sから動的にインスタンス化されていたデリゲートは、代わりにコントロールの一部になりました。 「インプレース」でインスタンス化されます。本質的に:
TextField {
style: TextFieldStyle {
textColor: "white"
background: Rectangle { color: "black" }
}
}
vs.
TextField {
color: "white"
background: Rectangle { color: "black" }
}
あなたは歴史についてもっと読むことができます ここ 。特に、 この投稿 は、Qt Quick Controls2の基本的な構造変更を強調しています。