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

问题描述:

我需要材料样式替换标准窗口小部件,并且使用自定义窗口小部件很难实现它们。我想知道是否有任何方法可以包含快速控制模块的小部件,并将它们用作常规小部件?我可以在qt小部件应用程序中使用快速控件吗?

如果您的应用程序是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); 

您可以使用QQuickWidget如果要插入您的QML视图的布局:

//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