标签: qt-quick

Qt Creator中的"设计"按钮变为灰色,用于QML项目

我正在使用Kubuntu 11系统并尝试我的第一个Qt Quick项目.因为这是Kubuntu,我只是运行它附带的Qt,到目前为止工作正常.

我让Qt Creator从Qt Quick创建了样本"Hello World"项目.但是设计按钮显示为灰色,运行按钮也是如此.

首先,当我进入"运行设置"下的项目菜单时,它说Qt版本:[无效的Qt版本].按下"Manage Qt versions"按钮会弹出一个树形控件,如下所示:

v -- Auto-detected
|     |
|     +---Qt in PATH /usr/bin/qmake-qt4
|
+--- Manual
Run Code Online (Sandbox Code Playgroud)

在对话框的底部显示"找到Qt版本4.7.2,使用mkspec linux-g ++(桌面)"

我发现我可以通过手动选择从应用程序存储库安装QmlViewer来获取"无效的Qt版本"消息.你会认为它会说更像"未找到Qml Viewer,请安装它"但是......哦.现在它说Qt版本:[Qt in PATH].

所以这是固定的,Qml应用程序运行.但"设计"按钮仍然显示为灰色.Qt Designer作为应用程序安装,其插件显示在"About Plugins ..."列表中.当我单击表单文件时,在普通(非Qt-Quick)项目中启用了设计按钮,而不是.qml文件.

qt kubuntu qt-creator qml qt-quick

7
推荐指数
3
解决办法
6420
查看次数

在QtQuick中应用MVVM模式

如何在QtQuick应用程序中应用MVVM模式?
任何人都可以给我任何样本(简单)代码吗?

谢谢

qt mvvm qt-quick

7
推荐指数
1
解决办法
4103
查看次数

Qt Quick 1.1:如何删除QML列表视图中的元素?

在我的应用程序UI中,我在QML列表视图中显示了许多元素,当其中一个元素被删除时,它应该以动画方式向上滑动到它上面的元素后面.实现这一目的的代码与Qt文档中的这个示例非常相似,只是我为y坐标设置动画而不是动画scale,我需要递减z值以确保元素向后滑动而不是在它上面的元素前面:

Component {
    id: delegate
    Item {
        ListView.onRemove:
            SequentialAnimation {
                // enable delayed removal
                PropertyAction {
                    target: wrapper
                    property: "ListView.delayRemove"
                    value: true
                }
                // make box slide up behind rather
                // than in front of the box above
                PropertyAction {
                    target: wrapper
                    property: "z"
                    value: wrapper.z - 1
                }
                NumberAnimation {
                    target : wrapper
                    property : "y"
                    from : wrapper.y
                    to   : wrapper.y - wrapper.height
                    duration    : style.removeTransitionDuration …
Run Code Online (Sandbox Code Playgroud)

animation qt listview qml qt-quick

7
推荐指数
1
解决办法
3362
查看次数

Qml计时器未在正确的时间间隔内触发

我已经创建了一个计时器QML应用程序,我正在使用Timer qml组件.间隔设置为1000毫秒(默认值为1)......但只有当应用程序关注它时,它似乎才能正常工作.当我把它放在后台时,似乎每次都没有触发,因此我在应用程序中遇到了一些错误.

我试图在文档中找到与此相关的任何内容,但我不能定时器代码非常简单:

Timer {
    id: timer
    repeat: true
    onTriggered: {msRemaining -= 1000; Core.secondsToText(type);}
}
Run Code Online (Sandbox Code Playgroud)

任何人对此有任何想法以及如何解决它?

版本:Qt 5.2 QML 2.0 OS X 10.9

qt timer qml qt-quick qt5

7
推荐指数
1
解决办法
8556
查看次数

来自委托的QML TableView访问模型属性

我有一个TableView,我已经定义了自己的itemDelegate.现在,从这个委托中我可以使用styleData.value访问列的值,但是我还需要访问同一个项目中的其他属性,但我找不到如何操作.

我需要这个,因为文本样式需要根据项目模型的其他属性进行更改.

有任何想法吗?谢谢!

qt qml qt-quick qtquick2 qtquickcontrols

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

QtQuick,如何知道应用程序是在调试模式还是发布模式下编译的?

在Qt/C++中有QT_DEBUG定义宏来知道它何时在调试或发布时编译.

是否有任何方法可以知道应用程序是否在QML文件中以调试或释放模式运行?

qt qml qt-quick qtquick2 qtquickcontrols

7
推荐指数
1
解决办法
2029
查看次数

如何使用QML Scale Element进行不同来源的增量缩放

我正在尝试使用QML Scale Element来围绕用户点击的点执行视图缩放,但它并不总是按照记录的方式工作.

要重现该问题,请运行下面的最小QML示例(我在Ubuntu 14.04 x86_64上使用Qt 5.3.1)然后:

  • 单击左上角蓝色矩形的中心.
  • 看到所有内容都按比例放大,但蓝色矩形的中心仍保留在您的点击位置.这是在http://doc.qt.io/qt-5/qml-qtquick-scale.html中记录的 - "[原点]保持项目缩放的点(即,保持固定的点)相对于父项,随着项目的其余部分增长)."
  • 现在单击红色矩形的中心.
  • 看到所有内容都按比例放大,但红色矩形的中心没有保留在您的点击位置,它被向上和向左平移.这不是记录在案的.

我的目标是让它始终正确缩放,将点击点保持为原点,如文档中所述.

PS有趣的是,如果您现在再次点击红色矩形的中心,它会按照承诺在该点附近放大.现在再次单击蓝色矩形的中心,您会看到相同的意外翻译行为.

PPS我正在开发一个应用程序,用户可以在包含矩形的任何地方鼠标滚动/捏住,内部的所有内容都应该在鼠标/捏合位置周围向上或向下缩放.许多应用程序都有这种行为.参见例如inkscape.

import QtQuick 2.2
import QtQuick.Controls 1.1

ApplicationWindow {
    visible: true
    width: 640
    height: 480
    title: qsTr("Hello World")

    Rectangle {
        x: 100
        y: 100
        width: 300
        height: 300

        transform: Scale {
            id: tform
        }

        MouseArea {
            anchors.fill: parent
            onClicked: {
                console.log(mouse.x + " " + mouse.y)
                tform.xScale += 0.5
                tform.yScale += 0.5
                tform.origin.x = mouse.x
                tform.origin.y = mouse.y
            }
        } …
Run Code Online (Sandbox Code Playgroud)

qt qml qt-quick

7
推荐指数
1
解决办法
5241
查看次数

Qt快速内存使用

在我们注意到的中型Qt项目上工作时,如果屏幕上没有太多内存,那么内存消耗会非常高.我试图找到某种memleak导致我进入CREATE_QML_OBJECT宏,其中创建了qml实例对象.从加载的qml文件中删除所有自定义ui元素后,只留下我得到的四个基本元素

Rectangle {
    Button {}
    CheckBox {}
    Slider {}
    TextField {}
}
Run Code Online (Sandbox Code Playgroud)

而这个东西消耗大约~1-1.5 MB.

我已经看过QtQuick演示项目,那里有同样的事情:

图库演示.只是一堆控件,启动时100 MB.

相同的游戏演示.简单的游戏,在玩了256分钟的5分钟后就消失了.

我很惊讶一个简单的QtQuick QML应用程序可以占用大量内存.有人知道是什么导致这种分配,有没有办法管理它?

任何帮助将不胜感激.


相关链接,还没有找到答案

QML大内存消耗?

QML应用程序的内存占用

绩效考虑和建议

qml qt-quick

7
推荐指数
1
解决办法
1896
查看次数

Flickable中的MouseArea阻止它轻弹

我正在使用MouseArea实现手势捕捉器(向左/向右滑动).它应该在Flickable内部使用垂直flickableDirection.此外,它应该以可视堆栈顺序将鼠标事件传播到其下的其他元素.问题是,将propagateComposedEvents设置为true的子mouseArea 在完成一次单击之前阻止任何父级的轻弹.首次点击后,它正常工作.这是显示此内容的简化代码.

import QtQuick 2.4
import QtQuick.Window 2.2

Window {
    id: __root
    visible: true
    width: 460; height: 640

    Flickable {
        id: mainFlickable

        width: parent.width
        height: parent.height
        contentHeight: column.height
        flickableDirection: Flickable.VerticalFlick

        MouseArea {
            anchors.fill: parent
            propagateComposedEvents: true
            z: 1
        }

        Column {
            id: column

            width: parent.width

            Repeater {
                model: 5

                Rectangle {
                    width: __root.width
                    height: 200

                    color: "yellow"
                    border.width: 2

                    MouseArea {
                        anchors.fill: parent

                        onClicked: {
                            console.log("clicked")
                        }
                    }
                }
            } //repeater
        } //column
    } //flickable
} …
Run Code Online (Sandbox Code Playgroud)

qt qml qt-quick qt5

7
推荐指数
1
解决办法
3242
查看次数

QML拖放(自由定位)

那里有很多QML拖放示例,但它们都没有真正帮助我,因为在所有示例中,您可以将一个元素拖动到另一个元素中,它在哪里居中,而上面拖动的所有其他元素都在它上面.

有没有办法在一侧有一些元素,在另一侧有一个大的Rectangle地方可以拖入它们,将它们放在它内部的任何地方并且它们保持在它们的确切下落位置?

举例来说,如果我有一个Rectanglewidth: 200; height: 200我在,这样的元素应该留在我已经放弃了它的位置,例如拖动的元素x: 25y: 65.这应该是元素的位置.

你有什么建议吗?

drag-and-drop qml qt-quick qtquick2

7
推荐指数
1
解决办法
7590
查看次数