c++ - 使用 C++ 模型时,如何在 qml ListView 中使用另一个 qml 文件作为委托?
问题描述
我想将 ListView 与来自另一个 qml 文件的委托一起使用。使用 qml 模型有效,但现在我使用的是 C++ 模型,并且仅当在视图的同一 qml 文件上声明委托时才有效。
main.qml
import QtQuick 2.11
import QtQuick.Controls 2.4
import QtQuick.Controls.Material 2.4
import QtQuick.Layouts 1.11
import QtQuick.Window 2.11
Rectangle {
id: window
width: 400
height: 500
ListView {
id: myListView
anchors.fill: parent
model: myModel
delegate: MyDelegate {}
}
}
MyDelegate.qml
import QtQuick 2.12
import QtQuick.Controls 2.4
import QtQuick.Controls.Material 2.4
import QtQuick.Layouts 1.11
import QtQuick.Window 2.11
ItemDelegate{
id: myDelegate
width: parent.width
height: 50
Rectangle{
width: parent.width
height: parent.height
color: "gray"
}
}
主文件
#include <QtQuick/qquickitem.h>
#include <QtQuick/qquickview.h>
int main(int argc, char ** argv)
{
QGuiApplication app(argc, argv);
ElementModel model;
model.addElement(Element("first");
model.addElement(Element("second");
QQuickView view;
view.setResizeMode(QQuickView::SizeRootObjectToView);
QQmlContext *ctxt = view.rootContext();
ctxt->setContextProperty("myModel", &model);
view.setSource(QUrl("qrc:main.qml"));
view.show();
return app.exec();
}
我尝试import "MyDelegate.qml" as MyDelegate
在 main.qml 中使用,但它不起作用。我该怎么做?
谢谢!
[解决了]
view.setSource
需要像这样调用该方法来检测其他 qml 文件:
view.setSource(QUrl("qrc:/main.qml"));
解决方案
推荐阅读
- c# - 'Func<,>' 类型在未引用的程序集中定义。您必须添加对程序集 'netstandard; 的引用;C#; 添加 ref 不起作用
- python - 如何在 Scrapy 中抓取稍后通过 ajax 获取部分数据的页面?
- c# - Azure 管道 - '名称空间中不存在类型或名称空间名称'基础结构''
- javascript - 如何检测 HTML 视频是否受到 Chrome 中的 javascript 的 DRM 保护?
- merge - ImageMagick:将多个 PNG 图像裁剪并合并为一个 PDF 时,页面会移出视图
- c++ - c ++模板成员函数,在类外具有部分特殊化
- amazon-web-services - Terraform Cognito 用户池
- html - 如何使用 flexbox 列和悬停水平 div?
- regex - Ruby:为正则表达式扫描二进制 IO
- javascript - 如何更改 Vuetify 日历中事件的边框颜色?