标签: qml

如何在QML中制作可调整大小的矩形?

我正在寻找一种简单的方法来创建一个矩形QQuickItem.我想调整大小,并像这样拖动这个矩形的边框(在resizable中QRubberBand找到)

在此输入图像描述

有人有想法吗?

qt qml qt5 qtquick2 qquickitem

12
推荐指数
1
解决办法
7544
查看次数

Row和RowLayout有什么区别?

这可以按预期使用Row,但不能使用RowLayout.为什么?两者有什么区别?

ApplicationWindow {    
    title: "Testing"
    width: 640
    height: 480

    //RowLayout {
    Row {        
        anchors.fill: parent

        Rectangle {
            id: rect1
            width: parent.width * 0.3
            height: parent.height
            color: "blue"
        }
        Rectangle {
            height: parent.height
            width: parent.width * 0.7
            color: "red"
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

qt qml qtquick2

12
推荐指数
1
解决办法
8937
查看次数

关于Raspberry PI Rev. 1的Qt-QML JIT

我和我的朋友正在研究由Raspberry PI B +和一个小触摸屏驱动的便携式互联网收音机.我正在使用Qt-5.9开发接口,我已经为PI的ARMv6 CPU交叉编译了.我的界面正在使用QML,所以当我启动我的应用程序时,每一个工作但QML动画都是滞后的.因此控制台告诉我QML JIT没有启用(JIT is disabled for QML. Property bindings and animations will be very slow. Visit https://wiki.qt.io/V4 to learn about possible solutions for your platform.),所以我在给定的页面上查找了关于V4引擎的信息,经过大约两周的试用,我发现问题是缺少使用Thumb的可能性-1指令集,V4需要,以及在Pi上运行的Raspbian Jessie的HardFP配置.所以现在我认为如果我让交叉编译器使用Thumb-1集合它会工作.我尝试了很多,最后我遇到了两个问题.

  1. 当我-mthumb在命令行中使用该标志时,我收到此错误:sorry, unimplemented: Thumb-1 hard-float VFP ABI.我需要Thumb-1,我无法更改整个操作系统的Hard-Float实现,并且ARMv6没有合适的编译器标志来禁用VFP.
  2. 当我-mthumb-interwork在命令行中使用该标志时,编译工作,但由于ABI设置,可执行文件不会更改(https://gcc.gnu.org/onlinedocs/gcc-4.8.5/gcc/ARM-Options .html #ARM-Options)(-mthumb-interwork: ... In AAPCS (the ABI) configurations this option is meaningless.).我尝试了所有可能的ABI但没有一个工作并编译正在运行的程序.

我也读过关于RPi的一些补丁,但很久以前它们被包含在上游Qt中.

我稍微修改了编译器参数(文件:QT/qtbase/mkspecs/devices/linux-rasp-pi-g ++/qmake.conf):

QMAKE_CFLAGS           += \
                      -mthumb \
                      -mfpu=vfp \
                      -mtune=arm1176jzf-s \
                      -march=armv6zk \
                      -mabi=aapcs-linux
Run Code Online (Sandbox Code Playgroud)

(此配置不起作用)

我使用以下参数配置QT:

./configure -release -opengl …
Run Code Online (Sandbox Code Playgroud)

c++ qt jit qml raspberry-pi

12
推荐指数
1
解决办法
942
查看次数

MouseArea窃取了QML元素的鼠标事件

如果我放置一个MouseAreaQML元素,那么MouseArea将窃取所有鼠标事件.因此,TextEdit将是不可编辑和不可选择的.

TextEdit {
    // some properties
    MouseArea {
        // some properties
        OnClicked: { /* do something */ }
    }
}
Run Code Online (Sandbox Code Playgroud)

有办法解决吗?

顺便说一句,如果我把一个大的MouseArea放在另一个上MouseArea,更大的MouseArea将窃取所有鼠标事件.我该如何解决?我认为手动传递鼠标事件可以解决这个问题,但是怎么做呢?

qml

11
推荐指数
2
解决办法
2万
查看次数

在QML中动态添加元素到SplitView

我正在使用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)

qt qml qt-quick qtquick2

11
推荐指数
1
解决办法
3081
查看次数

如何在Qt/C++/QML中实现类似WPF的MVVM?

我正在编写一个概念验证应用程序,这非常简单.基本上它由一个UI组成,其中"Note"类型对象列表显示在QML ListView中.

然后,我有几个类,这是类似的东西:

#ifndef NOTE_H
#define NOTE_H

#include <string>

using namespace std;
class Note
{
public:
    Note(QObject* parent = 0)
        : QObject(parent)
    {

    }

    Note(const int id, const string& text)
        : _id(id), _text(text)
    {
    }

    int id()
    {
        return _id;
    }

    const string text()
    {
        return _text;
    }

    void setText(string newText)
    {
        _text = newText;
    }

private:
    int _id;
    string _text;
};

#endif // NOTE_H
Run Code Online (Sandbox Code Playgroud)

然后一个存储库:

class NoteRepository : public Repository<Note>
{
public:
    NoteRepository();
    ~NoteRepository();

    virtual shared_ptr<Note> getOne(const int id); …
Run Code Online (Sandbox Code Playgroud)

wpf qt mvvm qml

11
推荐指数
1
解决办法
1万
查看次数

新的拖放机制在Qt-Quick中无法正常工作(Qt 5.3)

我试图实现拖动和使用新的QML类型的Qt 5.3下降Drag,DragEventDropArea.这是QML Drag类型文档中的原始示例,并进行了一些小的修改:

import QtQuick 2.2

Item {
    width: 800; height: 600

    DropArea {
        width: 100; height: 100; anchors.centerIn: parent

        Rectangle {
            anchors.fill: parent
            color: parent.containsDrag ? "red" : "green"
        }

        onEntered: print("entered");
        onExited: print("exited");
        onDropped: print("dropped");
    }

    Rectangle {
        x: 15; y: 15; width: 30; height: 30; color: "blue"

        Drag.active: dragArea.drag.active
        // Drag.dragType: Drag.Automatic
        Drag.onDragStarted: print("drag started");
        Drag.onDragFinished: print("drag finished");

        MouseArea {
            id: dragArea
            anchors.fill: parent
            drag.target: parent …
Run Code Online (Sandbox Code Playgroud)

qt drag-and-drop qml qt-quick qt5

11
推荐指数
1
解决办法
5011
查看次数

部署Qt5 QML应用程序

为了测试QML部署,我创建了一个非常简单的QML应用程序.这是代码:

main.cpp中

#include <QApplication>
#include <QQmlApplicationEngine>
#include <QFile>

int main(int argc, char **argv) {
    QApplication app(argc, argv);
    QQmlApplicationEngine engine;

    QString path = app.applicationDirPath() + "/qml/main.qml";
    if(QFile::exists(path))
        engine.load(path);
    else {
        return 1;
    }
    return app.exec();
}
Run Code Online (Sandbox Code Playgroud)

main.qml

import QtQuick 2.2
import QtQuick.Controls 1.2

ApplicationWindow {
    id: mainWindow
    title: "Test window"
    width: 800
    height: 600
    visible: true
}
Run Code Online (Sandbox Code Playgroud)

为了确保系统中没有安装任何开发库,我设置了一个纯Windows XP安装的虚拟机.然后,我按照此处所述的说明将所有 Qt5*.dll 复制到程序目录中,以及platforms/qwindows.dll和icu*52.dll.Dependency Walker确认没有遗留任何破坏的依赖关系,即一切都应该已经正确设置.

但是,由于某些原因,当我运行我的应用程序时,我什么也看不见.既不是窗口,也不是错误消息.从控制台运行也没有错误.尽管如此,我可以看到我的应用程序在任务管理器中运行,就像它在后台运行一样.在开发机器上运行应用程序没有问题:应用程序正确启动,我可以看到它的窗口.

我究竟做错了什么?如何部署QML应用程序以确保它可以在任何其他 - 非开发 - 机器上运行?

deployment qt qml qtquick2

11
推荐指数
2
解决办法
7323
查看次数

Qt Quick Controls 2和TableView

在Quick Controls 2.0应用程序中使用TableView是否可以?这将需要两个导入:

import QtQuick.Controls 1.4
import QtQuick.Controls 2.0
Run Code Online (Sandbox Code Playgroud)

我会得到任何副作用吗?

另一个相关的问题:似乎TableView属于Quick Controls 1.0集.是吗?是否意味着如果可以使用TableView,那么可以使用Quick Controls 2.0应用程序中的所有Quick Controls 1.0控件吗?

qt qml qtquickcontrols qtquickcontrols2

11
推荐指数
2
解决办法
9408
查看次数

QML WebView相机权限

我正在开发具有视频聊天功能的移动应用.我为webrtc找到了一个不错的javascript库,它似乎加载得很好,QWebView但我需要授予它访问摄像头和麦克风的权限,我无法弄清楚如何做到这一点.可能吗?QWebEngineView有一个方便的信号和插槽,但它不支持移动.

所描述的清单权限不工作在这里.

相应的Qt bug:无法通过QML WebView访问摄像头和麦克风

有任何想法吗?

qt android qwebview qml webrtc

11
推荐指数
2
解决办法
836
查看次数