QQuickWidget中的组件与QQuickView中的组件行为不同

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了QQuickWidget中的组件与QQuickView中的组件行为不同相关的知识,希望对你有一定的参考价值。

当用户在使用QQuickWidget时点击窗口上的其他位置时,ToolTip和ComboBox组件不会关闭,但是当使用QQuickView时它们会关闭(ToolTip消失并且组合框的弹出窗口关闭)。

任何想法,如果需要将一些属性设置为QQuickWidget以具有与QQuickView相同的行为。

更新: 单击按钮将隐藏组合框,但单击窗口上的任何其他位置将不会使组合框崩溃。 main.cpp中

int main(int argc, char *argv[])
{

    QApplication app(argc, argv);
    QQuickWidget *view = new QQuickWidget;
    view->setSource(QUrl("qrc:/resources/qml/test.qml"));
    view->show();
    return app.exec();
}

test.qml

import QtQuick 2.6
import QtQuick.Layouts 1.0
import QtQuick.Controls 2.0

Item {
id: test_combo
width: 400
height: 500
RowLayout{
   ComboBox {
        width: 200
        model: [ "Banana", "Apple", "Coconut" ]
    }

    Button{
        text: "test"
    }
    }
}
答案

我遇到了同样的问题,当我在ComboBox中点击窗口的其他地方时,我的PopupQQuickWidget不会关闭。

ComboBox表现得像我在qml WindowQQuickView中预期的那样。

我找到的解决方案是定制ComboBoxPopup并设置modalclosePolicy属性如下:

ComboBox {
    popup.modal: true
    popup.closePolicy: Popup.CloseOnEscape | Popup.CloseOnPressOutside
    model: [ "apples", "oranges", "pears" ]
}

那里的模型,因为你需要一个模型来看到Popup在行动。

以上是关于QQuickWidget中的组件与QQuickView中的组件行为不同的主要内容,如果未能解决你的问题,请参考以下文章

QQuickWidget 中的 MultiPointTouchArea 行为

Qt QQuickWidget 与 QGraphicsVideoItem 冲突

QQuickwidget 抓取窗口区域外的图像

在 QQuickWidget 中更新/重绘仪表

使用 QScrollArea 和 QQuickWidget

QQuickWidget 抓图