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

时间:2017-05-29 10:25:16

标签: c++ qt qml

当使用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"
    }
    }
}

1 个答案:

答案 0 :(得分:2)

我遇到了同样的问题,当ComboBox的{​​{1}}点击窗口中的其他位置Popup QQuickWidget时,ComboBox的{​​{1}}将无法关闭。

Window的行为符合我在qml QQuickViewComboBox中的预期。

我找到的解决方案是自定义Popup的{​​{1}}并设置modalclosePolicy属性,如下所示:

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

那里的模型因为你需要一个模型才能看到行动中的Popup