我可以在 qt widgets 应用程序中使用快速控件吗?
Can i use quick controls in a qt widgets application?
我需要 material 标准小部件的样式替换,使用自定义小部件很难实现它们。我想知道是否有任何方法可以从快速控制模块中包含小部件并将它们用作常规小部件?
如果你的应用是Qt5.1及以上版本,答案是可以。
您必须使用 QQuickView
对象并将其传递给 QWidget
的静态函数 createWindowContainer
,它在参数中采用 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);
如果要在布局中插入 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
。
我需要 material 标准小部件的样式替换,使用自定义小部件很难实现它们。我想知道是否有任何方法可以从快速控制模块中包含小部件并将它们用作常规小部件?
如果你的应用是Qt5.1及以上版本,答案是可以。
您必须使用 QQuickView
对象并将其传递给 QWidget
的静态函数 createWindowContainer
,它在参数中采用 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);
如果要在布局中插入 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
。