我可以在qt小部件应用程序中使用快速控件吗?

时间:2017-08-14 15:37:08

标签: qt qml qtquick2 qtwidgets

我需要使用标准窗口小部件的材质样式替换,并且使用自定义窗口小部件很难实现它们。我想知道是否有办法从快速控制模块中包含小部件并将它们用作常规小部件?

2 个答案:

答案 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