QML - не может назначить несуществующий "стиль" свойства,
Я использую Qt 5.10.1 с Qt Creator 4.5.1, а свойство style никогда не доступно в элементах.
Например, как показано здесь ButtonStyle QML Type, я хотел бы сделать:
Button {
text: "A button"
style: ButtonStyle {...}
}
Но я получаю ошибку:
Невозможно присвоить несуществующему свойству "стиль"
Я попытался с прямоangularьником, прогрессбаром, и я получаю ту же ошибку.
Изменить № 1:
У меня есть весь этот импорт. Если импорт отсутствует, я получаю сообщение об ошибке в ButtonStyle, но это ошибка в стиле.
import QtQuick 2.2
import QtQuick.Controls 2.3
import QtQuick.Dialogs 1.0
import QtGraphicalEffects 1.0
import QtQuick.Shapes 1.0
import QtQuick.Layouts 1.3
import QtQuick.Controls.Styles 1.4
Ответы
Ответ 1
В QML есть 2 типа кнопок:
В вашем случае вы импортируете кнопку Qt QuickControls 2: import QtQuick.Controls 2.3
, и эта кнопка не имеет атрибута style
.
Если вам нужно использовать стиль, вы должны импортировать:
import QtQuick.Controls 1.4
вместо:
import QtQuick.Controls 2.3
Если вы используете элементы из Qt Quick Control и Qt Quick Control 2, вы можете разделить их, используя пространство имен:
import QtQuick.Controls 2.3 as QQC2
import QtQuick.Controls 1.4 as QQC1
QQC1.Button {
text: "A button"
style: ButtonStyle {...}
}
QQC2.another_item_of_Qt_Quick_Controls2{
}
Ответ 2
Обязательно импортируйте QtQuick.Controls.Styles
import QtQuick.Controls.Styles 1.4
Button {
text: "A button"
style: ButtonStyle {...}
}
Ответ 3
Вы можете настроить кнопку Qt Quick Controls 2
, изменив два ее визуальных элемента: фон и элемент содержимого:
https://doc.qt.io/qt-5/qtquickcontrols2-customize.html#customizing-button
import QtQuick 2.12
import QtQuick.Controls 2.12
Button {
id: control
text: qsTr("Button")
contentItem: Text {
text: control.text
font: control.font
opacity: enabled ? 1.0 : 0.3
color: control.down ? "#17a81a" : "#21be2b"
horizontalAlignment: Text.AlignHCenter
verticalAlignment: Text.AlignVCenter
elide: Text.ElideRight
}
background: Rectangle {
implicitWidth: 100
implicitHeight: 40
opacity: enabled ? 1 : 0.3
border.color: control.down ? "#17a81a" : "#21be2b"
border.width: 1
radius: 2
}
}