我正在使用QML,我想动态地向SplitView添加元素,例如.onMouseClick,但到目前为止我没有找到答案.
到目前为止我发现的是SplitView它的默认属性设置为它的第一个孩子的data属性.所以我想我应该尝试添加新动态创建的组件,并将父组设置为该child(splitView1.children[0]).不幸的是,这也不起作用.在组件加载完成后,第一个子节点的子节点数为零(看起来像SplitLayout的Component.onCompleted事件调用一个将这些子节点移动到其他地方的函数).因此,添加的子项不会呈现(并且不响应任何布局附加属性).
请参阅以下代码段:
import QtQuick 2.1
import QtQuick.Controls 1.0
import QtQuick.Layouts 1.0
ApplicationWindow {
width: 600
height: 400
SplitView {
anchors.fill: parent
Rectangle {
id: column
width: 200
Layout.minimumWidth: 100
Layout.maximumWidth: 300
color: "lightsteelblue"
}
SplitView {
id: splitView1
orientation: Qt.Vertical
Layout.fillWidth: true
Rectangle {
id: row1
height: 200
color: "lightblue"
Layout.minimumHeight: 1
}
// Rectangle { //I want to add Rectangle to splitView1 like this one, but dynamicly eg.onMouseClick
// color: "blue"
// …Run Code Online (Sandbox Code Playgroud) 我的应用程序使用c ++和QML.
我在C++部分定义了几个对象来访问SQL等.
看起来像:
class MyObject : public QObject
{
Q_OBJECT
public:
MyObject(QObject *parent = 0);
Q_INVOKABLE void someFunction(const QString &query);
};
qmlRegisterType<MyObject>("xxx.xxx", 1, 0, "MyObject");
Run Code Online (Sandbox Code Playgroud)
理想情况下,我只需要在JML中使用这些对象,而不是在QML中.
我尝试了很多例子并阅读了所有文档,但仍然无法解决我的问题.
所以我的问题:
var obj = Qt.createComponent("MyObject");但看起来不行.是否有可能以正常的JS风格定义新对象 - var obj = new MyObject;?TypeError: Property 'someFunction' of object QQmlComponent(0x3605f5c0) is not a function.我在这里做错了什么?我的对象派生自QObject,而不是来自QQmlComponent.如何将可拆卸区域添加到QML ApplicationWindow?
以下面的应用程序(Tiled)为例.它有多个可拆卸区域.在第一张图像中,所有区域都附着,而在第二张图像中,区域正在分离/重新连接:

从C++开始,这可以用QDockWidget实现(参见这个问题).但是QML有解决方案吗?
完全是QT和QML的新手.我正在尝试设置基于两个属性格式双打之间的关系的矩形的颜色callValue和handRaiseXBB,但我得到的错误
意外令牌如果"
和
期望一个合格的名称ID
谁能告诉我我做错了什么?
import QtQuick 2.0
Item{
id: hand
property double callValue: 0.0
property double handRaiseXBB: 100
property string handCallColor: "green"
property string handFoldColor: "grey"
Rectangle {
anchors.fill: hand
if (hand.callValue >= hand.handRaiseXBB) {
color: hand.handFoldColor
}
else {
color: hand.handCallColor
}
}
}
Run Code Online (Sandbox Code Playgroud) 我想在我的应用程序中使用Video/ MediaPlayerQML元素,并让它从自定义流中播放视频.QMediaPlayer似乎支持这个,因为你可以告诉它从QIODevice哪个可以做任何你想做的事情.但MediaPlayer只支持URL.
有什么办法可以注册我自己使用自己的流媒体协议的URL方案吗?例如,说我想做rtsp2://...,我可以做一些模糊的事情:
class Rtsp2 : public QIODevice
{
// open, read, seek, close, etc.
}
QCoreApplication::registerUrlProtocol("rtsp2", Rtsp2);
Run Code Online (Sandbox Code Playgroud) 我们正在构建一个Qt Quick应用程序,它必须能够以给定名称保存文件.
在FileDialog组件中,您只能设置目录.这不是非常用户友好,因为您不希望每次下载文件时手动输入文件名.
到目前为止我们尝试过不同的东
来自QtQuick.Dialogs的FileDialog:无法设置filename
通过QPlatformFileDialogHelper进行原生对话(淘气私有c ++ hack):无法在Linux(Gnome)上设置文件名
通过静态QFileDialog :: getSaveFileName()的原生对话框:在快速应用程序中,'父'没有可用的QWidget
QFileDialog实例的QT对话:由于未设置'parent',因此模态doeas不起作用.在快速应用程序中,没有可用于setParent()调用的QWidget
(使用带有QT 5.1和QtQuick 2.1的C++,包括所有桌面组件)
我的任务是为QtQuick创建一个窗口,可以像普通窗口一样使用它,但具有自定义框架外观(不是默认的系统装饰).我想实现类似于Visual Studio窗口或类似的效果.
允许我实现该目标的代码如下所示:
main.cpp中
#include <QtQuick/qquickpainteditem.h>
#include <qapplication.h>
#include <qqmlengine.h>
#include <QtQuick/qquickwindow.h>
class frameLess :
public QQuickWindow
{
public:
frameLess(QWindow *parent = 0) :QQuickWindow(parent) { }
bool nativeEvent(const QByteArray& eventType, void* message, long* result)
{
MSG *msg = static_cast<MSG *>(message);
switch (msg->message)
{
case WM_SHOWWINDOW:
// after that call Qt considers window as frameless
setFlags(Qt::FramelessWindowHint | Qt::WindowSystemMenuHint | Qt::Window | Qt::WindowMinimizeButtonHint | Qt::WindowMaximizeButtonHint);
// that call force the Windows to serve users mouse events like in standard window
SetWindowLongPtr(msg->hwnd, GWL_STYLE, …Run Code Online (Sandbox Code Playgroud) 我在其中一个开发板上渲染QML屏幕时遇到问题
在某些屏幕上,我有悸动的GIF图像,在这里我可以看到屏幕的背景颜色,如图所示.

在某些屏幕上,我有列表视图,我通过JavaScript更新,这没有生效,因为我无法在列表视图元素中看到更新的图像/文本.
这是与刷新屏幕有关的某种问题吗?
在IX86上使用QML编译时,相同的代码在Ix86上运行良好.
在成功编译项目之后,我获得了一个可执行文件.
当我输入./program结果时,我看到:
QML Error: qrc:///qml/main.qml:25:1:module "QtGraphicalEffects" is not installed
qrc:///qml/main.qml:24:1:module "QtQuick" is not installed
Run Code Online (Sandbox Code Playgroud)
我正在使用QtQuick 2.0,Qt5和Ubuntu,QtQuick和QtGraphicalEffects,~/Qt5.0.2/5.0.2/gcc/qml/我已经从站点项目安装了新的Qt SDK.
我已尝试在Windows 7上运行此应用程序,但结果相同.
有人可以帮忙吗?