在Qt 5.4中,创建新"QtQuick UI文件"时的模板生成两个文件:MyScreen.qml和MyScreen.ui.qml.
该MyScreen.ui.qml文件似乎仅适用于UI,因为Qt Creator建议您只应在设计模式下编辑它.这意味着我应该在那里创建UI对象(标签,按钮等),并以某种方式MyScreen.qml在逻辑所在的文件中引用它们.原则上这听起来不错,但遗憾的是Qt没有提供如何使用这两个文件的任何示例.
以下是这些文件的内容:
MyScreen.qml:
import QtQuick 2.4
MyScreen {
}
Run Code Online (Sandbox Code Playgroud)
MyScreen.ui.qml (我在设计模式中添加了Text标签):
import QtQuick 2.4
Item {
width: 400
height: 400
Text {
id: text1
x: 144
y: 151
width: 103
height: 31
text: qsTr("Text")
font.pixelSize: 12
}
}
Run Code Online (Sandbox Code Playgroud)
我尝试实例化一个MyScreen用于a StackView(见下文),但(不出所料)我没有看到标签.
main.qml :
import QtQuick 2.4
import QtQuick.Controls 1.3
import QtQuick.Window 2.2
Window {
visible: true
StackView {
id: stack
anchors.fill: parent
initialItem: myscreen
} …Run Code Online (Sandbox Code Playgroud) 有人可以评论这样一个事实,即除非它是额外组件的一部分,否则不执行QML任何命令性JavaScript代码.当我将以下代码包含在我的QML中时,我遇到了这样的问题:
function qmlSlot(text){
page.data=text
if(page.data==="received")
page.color="black";
}
Run Code Online (Sandbox Code Playgroud)
当Qt Designer被冻结并显示以下警告:
Qt Quick Designer不支持命令式代码
我读到构建qmlpuppet会安装一个可执行文件,用于在/bin构建它的Qt目录中呈现组件.如果qmlpuppet位于/ bin目录中,Qt Quick Designer将检查当前项目的Qt.如果是,则需要Qt版本提供的qmlpuppet而不是Qt Creator本身提供的qmlpuppet.在我的情况下,我没有使用Qt静态二进制安装,而是从源代码生成Qt,因此生成了qmlpuppet可执行文件,并且已经位于:
/usr/local/Qt-5.2.1/qtcreator/bin
-rwxr-xr-x 1 qml2puppet
-rwxr-xr-x 1 qmlpuppet
Run Code Online (Sandbox Code Playgroud)
因此,可执行文件qmlpuppet被放置在预期找到的位置,并且仍然会继续这个烦人的消息.
我现在采取的解决方法是在我想使用Qt Designer编辑前端QML时,注释掉任何所谓的"命令式代码".然后拿出那些评论后再次激活"命令代码".但这非常令人讨厌,尽管代码编译并按我预期的方式工作.
那么,我应该担心这个警告吗?无论如何,有一些意思是摆脱这个问题,因为它冻结了Qt设计师?
我正在尝试使用 qml 设计器,qtcreator 2.0.1但是当我创建新的 qml 项目时,设计器选项卡被禁用。
qml可以像uic++中的文件一样在设计器模式下编辑吗?