【发布时间】:2017-08-14 15:37:07
【问题描述】:
我需要标准小部件的材料样式替换,并且使用自定义小部件很难实现它们。我想知道是否有任何方法可以包含快速控制模块中的小部件并将它们用作常规小部件?
【问题讨论】:
我需要标准小部件的材料样式替换,并且使用自定义小部件很难实现它们。我想知道是否有任何方法可以包含快速控制模块中的小部件并将它们用作常规小部件?
【问题讨论】:
如果你的应用是Qt5.1及以上,答案是可以的。
您必须使用QQuickView 对象并将其传递给QWidget 的静态函数createWindowContainer,该函数将QWindow 作为参数。
QQuickView 派生自 QQuickWindow,而 QQuickWindow 派生自 QWindow。
因此您可以将QQuickView 作为输入传递给createWindowContainer。
下面是一些粗略的代码。
//CREATE A QQuickView OBJECT.
QQuickView *view = new QQuickView();
//ADD THE QQuickView OBJECT TO QWidget::createWindowContainer
QWidget *container = QWidget::createWindowContainer(view, this);
//ADD SOURCE
view->setSource(QUrl("your.qml"));
//ADD THE CONTAINER TO YOUR LAYOUT.
ui->verticalLayout->addWidget(container);
【讨论】:
如果您想在布局中插入 QML 视图,可以使用 QQuickWidget:
//CREATE THE QQuickWidget
QQuickWidget *quickWidget = new QQuickWidget(this);
//ADD SOURCE
view->setSource(QUrl("your.qml"));
//ADD THE QQuickWidget TO YOUR LAYOUT.
ui->verticalLayout->addWidget(quickWidget);
我修改了@katamarayudu 的代码以使用QQuickWidget 而不是QQuickView。
【讨论】: