我试图将一个简单的Qt Quick应用程序从Qt4.8移植到Qt5.0beta.我的初始(Qt4.8)代码类似于以下内容:
main.cpp将在具有半透明背景的无框窗口中显示QDeclarativeView
#include <QtGui/QApplication>
#include "qmlapplicationviewer.h"
#include <QtDeclarative>
#include <QDeclarativeContext>
Q_DECL_EXPORT int main(int argc, char *argv[])
{
QScopedPointer<QApplication> app(createApplication(argc, argv));
QmlApplicationViewer viewer;
viewer.setOrientation(QmlApplicationViewer::ScreenOrientationAuto);
viewer.setMainQmlFile(QLatin1String("qml/main.qml"));
viewer.setWindowFlags(Qt::FramelessWindowHint);
viewer.setAttribute(Qt::WA_TranslucentBackground);
viewer.setStyleSheet("background:transparent;");
viewer.setResizeMode(QDeclarativeView::SizeViewToRootObject);
viewer.showExpanded();
return app->exec();
}
Run Code Online (Sandbox Code Playgroud)
main.qml只会在另一个透明矩形内显示一个红色矩形.
import QtQuick 1.1
Rectangle {
width: 360
height: 360
color: "transparent"
Rectangle
{
x: 125
y: 122
width: 110
height: 116
anchors.centerIn: parent
color: "red"
radius: 27
}
Text {
color: "black"
text: qsTr("Press me!")
font.pointSize: 14
anchors.centerIn: parent
}
MouseArea {
anchors.fill: parent
onClicked: { …Run Code Online (Sandbox Code Playgroud) 我正在尝试在Windows上构建qtdemo,我差不多完成了它,但qtquick示例存在问题.我认为它始于qtdemo.pro文件,在这部分:
contains(QT_CONFIG, quick1) {
QT += quick1
} else {
DEFINES *= QT_NO_DECLARATIVE
}
Run Code Online (Sandbox Code Playgroud)
它总是设置QT_NO_DECLARATIVE,因此程序抛出错误并且不运行该示例.我正在寻找'*='运算符是什么意思,但我无法在任何地方找到它.有人知道吗?他们总是说+ =和 - =但是*=根本没有提到......
我正在尝试将C++类型添加到QML系统中.
#include <QtGui/QGuiApplication>
#include <QDeclarativeEngine>
#include <QDeclarativeComponent>
#include "qtquick2applicationviewer.h"
#include <QQmlApplicationEngine>
class FooBar: public QObject {
Q_OBJECT
};
int main(int argc, char *argv[])
{
QGuiApplication app(argc, argv);
QQmlApplicationEngine engine("qml/RBot/main.qml");
qmlRegisterType<FooBar>("io.secorp", 1, 0, "FooBar");
return app.exec();
}
Run Code Online (Sandbox Code Playgroud)
但是当我尝试编译它时(我不在.qml文件中导入它,只测试)我正在调试有关调试的错误.

怎么了?
谢谢.
我在 Qt Creator 中有一个 Qt 项目。我有一个qrc注册了 QML 的文件,一切正常。然而,由于某种原因,Qt Creator 的“项目”视图不像任何示例项目那样显示 QML 文件夹(附有屏幕截图)。
我只是好奇。为什么 QML 文件夹没有显示在我的项目中,但它显示在示例项目中?

当我们Loader在QML中更改组件的来源时,有没有办法应用动画?例如,假设我有以下内容Loader:
Loader {
anchors.fill: parent
id: loader
}
Run Code Online (Sandbox Code Playgroud)
我设置时,我想要一个从左到右的动画 loader.source = "content.qml"
谢谢你的帮助.
QML类型Component和Instantiator似乎做类似的事情; 按需创建QML对象,而不是解析其定义时. 那有什么区别? 为什么我要使用一个而不是另一个?
我在 TableView 中使用复选框控件,我使用 QML 定义该控件,如下所示:
import QtQuick 2.2
import QtQuick.Controls 1.4
import QtQuick.Controls.Styles 1.4
TableViewColumn {
title: ""
role: "check"
delegate: CheckBox {
anchors.fill: parent
checked: false
anchors { horizontalCenter: parent.horizontalCenter }
}
}
Run Code Online (Sandbox Code Playgroud)
我可以在 TableView 中使用它,如下所示:
import QtQuick 2.3
import QtQuick.Window 2.2
import QtQuick.Layouts 1.1
import QtQuick.Controls 1.4
import QtQuick.Controls.Styles 1.4
ControlView {
visible: true
width: parent.width; height: parent.height
anchors.centerIn: parent
TableView {
id: reviewTable
width: parent.width; height: parent.height
anchors.centerIn: parent
TableViewCheckBoxColumn {
title: "Upload"
width: 100
resizable: false …Run Code Online (Sandbox Code Playgroud) 我正在研究Qt应用程序,我需要动态创建窗口.每个窗口都包含基于QObject的c ++后端和基于qml的界面.每个窗口都需要连接到核心类发出的一堆信号.目前的解决方案是从中导出窗口QQuickView,将信号连接到它并使用加载qml setSource().这是一种正确的方式还是有更好的方法?是否更好地QQmlEngine为所有窗口使用一个窗口(并将此引擎用作每个窗口的父窗口)或为每个新窗口创建新引擎?
我正在尝试在运行 1.2 版时没有任何问题的代码中导入 QtQuick.Dialogs 1.3 版。但是在运行时我收到以下错误
模块“QtQuick.Dialogs”版本 1.3 未安装
我正在使用默认的 Desktop Qt 5.9.2 GCC 64 位套件进行编译
有人知道发生了什么吗?
我正在尝试使用 QtQuickControls2 对话框:
Dialog {
id: dialog
x: parent.width/2-width/2
y: parent.height/2-height/2
width:300
height:200
title: "Warning"
modal: true
standardButtons: Dialog.Ok
visible: false
onAccepted: console.log("Ok clicked")
}
Button {
id: button
objectName: "doSomethingButton"
onClicked: {
if(problemFlag==true)
dialog.visible=true
}
}
Run Code Online (Sandbox Code Playgroud)
如果按钮被点击并且problemFlag是 ,它应该被触发true。我读到如果modal设置为true用户无法与程序的其余部分交互。但是,如果我单击对话框外的某处,它就会消失(无需单击“确定”)。