小编BaC*_*Zzo的帖子

如何在更改模型时停止ListView以"跳转"

我需要做的是:我需要使用存储聊天消息的QML 创建聊天窗口ListView.我设置listView.positionViewAtEnd()为了跟随最后的消息.positionViewAtEnd当我向上滚动时,我禁用,这样我每次收到新消息时都可以读取过去的消息,而不会跳到最后.

问题:向上滚动后,每次收到新消息时,它都会跳到列表的开头.为了解决这个问题,我设法存储contentY列表并在每次onCountChanged调用处理程序时重置它(请参阅下面的代码):

ListView {
    id: messagesList
    model: contact? contact.messages: []
    delegate: delegate
    anchors.fill: parent
    anchors.bottomMargin: 20
    height: parent.height
    anchors.margins: 10

    property int currentContentY

    onMovementEnded: {
       currentContentY = contentY
    }

    onCountChanged: {
        contentY = currentContentY
    }
    onContentYChanged: {
        console.log(".....contentY: " + contentY)
    }
}   
Run Code Online (Sandbox Code Playgroud)

问题是,即使我设置了最后一个contentY,在模型更改之前,列表仍然会跳转一些(几个像素,而不是结束或开始)并且它不会始终跳转.当我走到列表的顶部并打印出来时,contentY我会得到负值.理论上,contentY在列表的开头应该是0.

有人能告诉我出了什么问题吗?或者可能建议另一种解决方案来创建我的消息列表

比你提前!:)

qt listview model qml qtquick2

9
推荐指数
1
解决办法
1433
查看次数

使用Vulkan渲染Qml

我有一个使用Open GL绘制的Qt应用程序。在某些时候,我正在使用与QQuickWindow关联的QQuickRenderControl方法将QML场景绘制到纹理中,以便稍后在最终图像中进行合成。

现在,我正在考虑将OpenGL移植到Vulkan,但不确定在此QML层是否可以这样做。

阅读Qt文档,我发现

QQuickWindow使用OpenGL顶部的场景图进行渲染。

您认为可以将其移植到Vulkan吗?也许是压倒一切的QQuickWindowQQuickRenderControl?我不是Qt专家,所以也许有人可以让我对问题有更好的了解。

qt qml qtquick2 vulkan

9
推荐指数
1
解决办法
1086
查看次数

如何找出qml中可用的字体?

我想知道我可以在QML环境中使用哪些字体作为font.family属性.这些字体是特定于系统还是内置于框架中?有没有办法列出所有可用的字体?

qt qml qtquick2

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

ListView滚动动画

我想为QML实现滚动动画ListView.这是一个示例图像:
ListView滚动动画
任何人都可以建议我实施这个吗?

谢谢.

animation qt listview qml qtquick2

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

在Column中对齐horizo​​ntalcenter

Column 文档解释了如何实现这一目标:

在此输入图像描述

但是,我想实现这个目标:

在此输入图像描述

也就是说,其中的所有项目Column都应该与中心水平对齐.anchors.horizontalCenter: parent.Center不起作用.如何获得所需的结果?

qt qml qt-quick qtquick2

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

如何通过字符串ID查找QML项目?

我有一个id我需要在QML树中找到的对象字符串.例如:

var idToFind = "myBtnId"
Run Code Online (Sandbox Code Playgroud)

我可以做以下的事情吗?

var objectThatINeed = myMainWindow.findObjectById(idToFind)
Run Code Online (Sandbox Code Playgroud)

据我所知,我可以objectName用于此目的(至少从C++开始).我可以在id不引入名称的情况下以某种方式重用现有的吗?

我想将此对象用作其他动态创建的控件的父对象.

qt dynamic qml qtquick2

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

从QRC文件加载qmldir

我正在尝试在Qt快速应用程序中使用QML材料库.

但是,当我尝试使用导入代码时,它说

模块"材料"未安装

import Material 0.1

我也试过这个,但似乎不起作用:

import "modules/Material" as Material

qml.qrc看起来像这样,qmldir列出了所有文件:

<RCC>
    <qresource prefix="/">
        <file>main.qml</file>
        <file>modules/Material/qmldir</file>
        <file>modules/Material/Extras/qmldir</file>
        <file>modules/Material/ListItems/qmldir</file>
        <file>modules/QtQuick/Controls/Styles/Material/qmldir</file>
    </qresource>
</RCC>
Run Code Online (Sandbox Code Playgroud)

main.cpp中

#include <QGuiApplication>
#include <QQmlApplicationEngine>

int main(int argc, char *argv[])
{
    QGuiApplication app(argc, argv);

    QQmlApplicationEngine engine;
    engine.addImportPath("qrc:/");
    engine.load(QUrl(QStringLiteral("qrc:/main.qml")));

    return app.exec();
}
Run Code Online (Sandbox Code Playgroud)

有什么我缺少或是不可能qmldirqrc文件中使用?

qt qml qtquick2

8
推荐指数
1
解决办法
8175
查看次数

QML ListView隐藏的委托项

有没有办法隐藏某些项目ListView

import QtQuick 2.4
import QtQuick.Controls 1.3
import QtQuick.Window 2.2

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



    ListView {
        anchors.fill: parent

        model: ListModel {
            ListElement { color: "red"; visible: true}
            ListElement { color: "green"; visible: false}
            ListElement { color: "blue"; visible: true}
        }

        delegate: Rectangle {
            width: parent.width
            height: model.visible ? 30 : 0
            color: model.color
            visible: model.visible
            enabled: model.visible
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

如果只有ListView可以忽略不可见的Items',上面的解决方案会很好height.

设置height0手动是坏的表现,所以我需要一个更好的解决方案.你可以帮帮我吗?

qt listview qml qtquick2

8
推荐指数
1
解决办法
4773
查看次数

QML和C++中的Null和Undefined

在使用C++编写的自定义类型扩展QML时,我开始怀疑JS和C++之间的差异.

这次我想知道,如果nullC++方面的检查是否足够,或者是否有类似QUndefined"我"可能需要考虑的事情.至于我可以看到,这是不是说明这里.

或者换句话说:

  • 当我undefined在QML端设置属性时,在C++端会发生什么
  • 当我null在QML端设置属性时,在C++端会发生什么
  • 当我null在C++端设置属性时,QML端会发生什么

javascript c++ qml qt5

8
推荐指数
1
解决办法
6761
查看次数

QQmlListProperty vs QAbstractListModel

我试图了解如何选择是否使用a QAbstractListModelQObjecta QQmlListProperty.

鉴于QQmlListProperty处理"角色"功能必须使用QAbstractListModel它来编写,它似乎是不那么乏味的路线.

我不知道大多数人是否建议使用QAbstractListModel仅仅因为它已经存在更长时间或者由于某种原因它是更好的选择.

我也没有找到任何关于两种选择之间权衡的讨论.这个问题是在Qt开发者日讨论讨论期间提出的QAbstractListModel,但答案是"那也行".

qt qml qabstractlistmodel

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