【问题标题】:Can i use quick controls in a qt widgets application?我可以在 qt 小部件应用程序中使用快速控件吗?
【发布时间】:2017-08-14 15:37:07
【问题描述】:

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

【问题讨论】:

    标签: qt qml qtquick2 qtwidgets


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      如果您想在布局中插入 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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-09-11
        • 2019-09-05
        • 1970-01-01
        • 2014-02-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多