标签: qt-quick

其中定义了 'index' 属性,因为 Repeater 用于实例化项目数组,每个项目都可以访问索引

我猜索引是一个附加属性,但它在哪里定义以及为什么访问索引不是 as ListView.isCurrentItem

从官方文档来看, Repeater 的delegate属性的描述

委托会暴露给只读索引属性,该属性指示中继器内委托的索引。

我更困惑了。为什么委托会暴露给某个属性?通过什么操作会发生这种情况?

qt qml qt-quick qt5 qtquick2

3
推荐指数
1
解决办法
4837
查看次数

在Qt Quick中,如何确保ListView的委托宽度等于视图的宽度?

这是我的 QML 视图:

// Imports ommitted

Item {
    id: paymentMethods
    required property PaymentMethodsModel model

    ColumnLayout {
        anchors.fill: parent;

        Text {
            text: "Payment methods";
        }

        ListView {
            Layout.fillHeight: true
            Layout.fillWidth: true
            model: paymentMethods.model
            delegate: PaymentMethods.Item { }
        }

        ToolBar { }
    }
}
Run Code Online (Sandbox Code Playgroud)

问题是,它看起来像这样:

文本和按钮全部被平滑的应用程序窗口

我认为这是因为委托没有指定宽度,因为如果我这样做:

        delegate: PaymentMethods.Item {
            width: parent.width
            onPmSaved: {
                ListView.view.model.rename(index, newName)
            }
        }
Run Code Online (Sandbox Code Playgroud)

它看起来好多了:

应用程序窗口,文本和按钮很好地分开

问题是,当我进行对项目重新排序的编辑时,我收到此错误:

qrc:/PaymentMethods.qml:32: TypeError: Cannot read property 'width' of null
Run Code Online (Sandbox Code Playgroud)

有没有一种好方法将 QML ListView 的委托宽度设置为完整父级的宽度?

qt listview qt-quick

3
推荐指数
1
解决办法
1761
查看次数

为什么我们需要一个"朋友"?(C++)

qml查看器(适用于4.8和5.0)实现如下:

在.h(eader)我们有:

class QtQuick2ApplicationViewer : public QQuickView
{
    Q_OBJECT

...

private:
    class QtQuick2ApplicationViewerPrivate *d;
};
Run Code Online (Sandbox Code Playgroud)

然后在.CPP文件中:

class QtQuick2ApplicationViewerPrivate
{
    QString mainQmlFile;
    friend class QtQuick2ApplicationViewer;
    static QString adjustPath(const QString &path);
};

QtQuick2ApplicationViewer::QtQuick2ApplicationViewer(QWindow *parent)
    : QQuickView(parent)
    , d(new QtQuick2ApplicationViewerPrivate())
{
    connect(engine(), SIGNAL(quit()), SLOT(close()));
    setResizeMode(QQuickView::SizeRootObjectToView);

#ifdef Q_OS_ANDROID
    engine()->setBaseUrl(QUrl::fromLocalFile("/"));
#endif
}
Run Code Online (Sandbox Code Playgroud)

为什么friend在这里需要使用?我没有看到任何人使用friend课程的原因.朋友课有没有真正的用途(除了任何人都可以没有的外来物种)?

.h #include

class QtQuick2ApplicationViewer : public QQuickView
{
    Q_OBJECT

public:
    explicit QtQuick2ApplicationViewer(QWindow *parent = 0);
    virtual ~QtQuick2ApplicationViewer();

    void setMainQmlFile(const QString &file);
    void addImportPath(const QString &path);

    void showExpanded();

private: …
Run Code Online (Sandbox Code Playgroud)

c++ qt friend-class qml qt-quick

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

使用动画向转发器添加元素

我有一个转发器,它们在创建时被动画化.

Repeater {
    model : 0

    Image {
       ...

       Animation {
           ...
       }
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我在上一个元素的动画结束后向模型添加元素,那么一切都正常.但如果我之前添加一个eleent,它就无法工作.例如,如果我有枪射击子弹,如果我等到子弹的动画结束一切正常.但如果我想在第一个结束之前拍摄另一个子弹,第一个消失,我只看到第二个动画.

我该怎么做才能看到所有的动画?

javascript qt qml qt-quick qtquick2

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

QtQuick Rectangle控制什么边框显示?

如何使用QtQuick 2绘制矩形并控制它是显示左边界还是右边界?

qt qml qt-quick qtquick2

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

QtQuick:QQmlApplicationEngine无法加载组件qrc:/main.qml:23无效的附加对象分配

鉴于我的想法,我咆哮着错误的树?或者提供以下信息我是否滥用Qt API来获取标题中的错误?

我正在尝试修改http://doc.qt.io/qt-5/qtquick-scenegraph-openglunderqml-example.html上的示例,以使用Qt Creator 3.3.0(opensource)生成的默认QtQuick项目. Qt 5.4.0(GCC 4.6.1,64位).

仔细查看代码后,第一件事就是:

样本main.cpp使用:

qmlRegisterType<Squircle>("OpenGLUnderQML", 1, 0, "Squircle");

QQuickView view;
view.setResizeMode(QQuickView::SizeRootObjectToView);
view.setSource(QUrl("qrc:///scenegraph/openglunderqml/main.qml"));
view.show();
Run Code Online (Sandbox Code Playgroud)

有些重命名我的main.cpp使用

qmlRegisterType<MainScreen>("OpenGLUnderQML", 1, 0, "MainScreen");

QQmlApplicationEngine engine;
engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
Run Code Online (Sandbox Code Playgroud)

我不确定使用QQmlApplicationEngine而不是QuickView的差异是否会导致我的错误:

QQmlApplicationEngine无法加载组件qrc:/main.qml:23
无效的附加对象分配

我的main.qml看起来像:

import QtQuick 2.4
import QtQuick.Window 2.2
import OpenGLUnderQML 1.0
import "qmlmodel"

Window {
    id: mainWindow
    width: 800
    height: 600
    visible: true
    color: "black"
    title: "Army Calculator"
    objectName: "mainWindow"

    ListView {
        id: mainListView
        anchors.fill: parent
        objectName: "mainListView"
    }

    MainScreen {
        SequentialAnimation on DeltaT {
            NumberAnimation { to: 1; …
Run Code Online (Sandbox Code Playgroud)

c++ qt qml qt-quick qt5.4

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

设置Rectangle的旋转点

有没有办法设置旋转点Rectangle并简单地使用旋转属性而不需要任何其他附加组件?我想旋转Rectangle与绑定的属性rotation: value * 180是这样

Rectangle{
    id: body
    rotation: value
    anchors.centerIn: parent.Center
    antialiasing: true
}
onValueChanged: body.rotation = value
Run Code Online (Sandbox Code Playgroud)

我只绕父母的左上角旋转.请帮助我理解这种行为或建议我在中心实施轮换的另一种方法.

qt rotation qml qt-quick qtquick2

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

QML中的自定义附加属性

我正在创建一个自定义QML组件(其特殊性ListView允许多个选择).我想为提供给我的组件的对象提供附加属性.我看到如何使用C++创建附加属性.但是,我找不到有关在纯QML中添加自定义属性的信息.这可能使用QML吗?

qt qml qt-quick

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

如何仅旋转图像的右侧或左侧部分

我想模拟一本书的一页封闭.有关如何在qml中执行此操作的任何建议?

提前致谢

qml qt-quick qtquick2

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

如何使用QML StackView?

我是QMl的初学者,在QT C++中使用StackWidget做了更多.在QML中,我很困惑使用stackView并编写了以下代码:

Window {
    visible: true
    width: 640
    height: 480
    title: qsTr("Stack view")

    MainForm {
        StackView {
            id: stackView
            x: 0
            y: 0
            width: 360
            height: 360

            initialItem: page1

            Rectangle {
                id: page1

                //anchors.fill: parent
                color: "lightgreen"
                Button {
                    id: buttonPage1
                    text: "back to 2"
                    anchors.centerIn: parent
                    onClicked: {
                        stackView.pop()  //**Is THIS CORRECT**
                        stackView.push(page2) //**Is THIS CORRECT**

                    }
                }
                TextEdit {
                    id: te1
                    width: 105
                    height: 40
                    text: "enter"
                }
            }
            Rectangle {
                id: page2

                //anchors.fill: …
Run Code Online (Sandbox Code Playgroud)

qt qml qt-quick qtquick2 qtquickcontrols

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