我需要使用标准窗口小部件的材质样式替换,并且使用自定义窗口小部件很难实现它们。我想知道是否有办法从快速控制模块中包含小部件并将它们用作常规小部件?
答案 0 :(得分:3)
如果您的申请是Qt5.1及以上,答案是肯定的。
您必须使用QQuickView
对象并将其传递给createWindowContainer
的静态函数QWidget
,其中QWindow
为参数。
QQuickView
派生自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);
答案 1 :(得分:2)
如果要在布局中插入QML视图,可以使用QQuickWidget
:
initializeMyWidget();
myWidget->show();
我改编了@ katamarayudu的代码,使用//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);
代替QQuickWidget
。