覆盖时 Qt Quick Controls 2 挂起 Button.qml
Qt Quick Controls 2 hangs when overwriting Button.qml
我正在尝试 implement my own style 为此,我想覆盖内置对象。这是我正在做的事情:
// main.cpp
QQuickStyle::setStyle("mystyle");
和
// mystyle/Button.qml
import QtQuick 2.5
import QtQuick.Controls 2.1 as Controls
Controls.Button {
background: Rectangle {
color: "green"
}
}
和
// qml.qrc
<RCC>
<qresource prefix="/">
<file>main.qml</file>
<file>mystyle/CheckBox.qml</file>
</qresource>
</RCC>
根据文档,我认为这应该会自动运行 using file selectors。
但是,我的应用程序在启动时挂起。我的猜测是我陷入了递归导入。我该如何正确执行此操作?
必须在加载导入 Qt Quick 的 QML 之前配置样式 Controls.It 无法在注册 QML 类型后更改样式。 setStyle()
在自定义样式的 qml 文件中应用现有样式。
注意:推荐使用QQmlApplicationEngine,它内部会创建一个QQmlFileSelector实例。这就是使用 QML 文件选择器所需的全部内容。
Qt Quick Controls 2 样式系统基于 QML 类型注册。当您 运行 您的应用具有 mystyle 时,该类型称为 QtQuick.Controls.Button IS mystyle/Button.qml
。因此mystyle/Button.qml
不能继承QtQuick.Controls.Button。它不能继承自己。
这与编写以下 C++ 基本相同:
// button.h
#include "button.h"
class Button : public Button {};
有点激进,但比喻通俗易懂。 :)
你能做的就是把(My)Button.qml
放在某个地方,让它继承QtQuick.Controls.Button,不要把它注册成Qt Quick Controls 2,直接导入文件夹。这就是我们所说的“Customizing Qt Quick Controls 2”。
我正在尝试 implement my own style 为此,我想覆盖内置对象。这是我正在做的事情:
// main.cpp
QQuickStyle::setStyle("mystyle");
和
// mystyle/Button.qml
import QtQuick 2.5
import QtQuick.Controls 2.1 as Controls
Controls.Button {
background: Rectangle {
color: "green"
}
}
和
// qml.qrc
<RCC>
<qresource prefix="/">
<file>main.qml</file>
<file>mystyle/CheckBox.qml</file>
</qresource>
</RCC>
根据文档,我认为这应该会自动运行 using file selectors。
但是,我的应用程序在启动时挂起。我的猜测是我陷入了递归导入。我该如何正确执行此操作?
必须在加载导入 Qt Quick 的 QML 之前配置样式 Controls.It 无法在注册 QML 类型后更改样式。 setStyle()
在自定义样式的 qml 文件中应用现有样式。
注意:推荐使用QQmlApplicationEngine,它内部会创建一个QQmlFileSelector实例。这就是使用 QML 文件选择器所需的全部内容。
Qt Quick Controls 2 样式系统基于 QML 类型注册。当您 运行 您的应用具有 mystyle 时,该类型称为 QtQuick.Controls.Button IS mystyle/Button.qml
。因此mystyle/Button.qml
不能继承QtQuick.Controls.Button。它不能继承自己。
这与编写以下 C++ 基本相同:
// button.h
#include "button.h"
class Button : public Button {};
有点激进,但比喻通俗易懂。 :)
你能做的就是把(My)Button.qml
放在某个地方,让它继承QtQuick.Controls.Button,不要把它注册成Qt Quick Controls 2,直接导入文件夹。这就是我们所说的“Customizing Qt Quick Controls 2”。