Мне нужно использовать QWidgets и QML в том же окне приложения. Я могу внедрить QML с QWidget::createWindowContainer
. Однако мне также нужно указать пользовательские флаги окна. Ранее с 2 окна Qt Quick, это работало без проблем:Qt :: CustomizeWindowHint breaks createWindowContainer?
qmlWindow()->setFlags((qmlWindow()->flags() | Qt::CustomizeWindowHint) & ~Qt::WindowTitleHint);
Однако, когда я делаю то же
_window.show();
QWindow *windowHandle = _window.windowHandle();
windowHandle->setFlags((windowHandle->flags() | Qt::CustomizeWindowHint) & ~Qt::WindowTitleHint);
на моем окне QWidget, только подвиды QWidget воспроизводимые, то QML, созданные с помощью QWidget::createWindowContainer
, нет. Существует только пустое (белое) пространство, где они должны быть. Что может быть причиной этой проблемы?
Мышиные щелчки обнаруживаются в тех местах, где они должны быть, «только» на дисплее нет. В консоли нет предупреждающих сообщений.
Это происходит на OS X, оно хорошо работает Windows (по крайней мере, на 8.1).
Спасибо!
Вы пробовали устанавливать флажки окон ПЕРЕД показом окна? Я знаю, по крайней мере, одну ошибку в Qt в OS X, связанную с изменением флажков окна для отображаемого окна - https://bugreports.qt.io/browse/QTBUG-45938. –
Спасибо за ваш комментарий! Да, я пробовал, но windowHandle() возвращает null в этом случае. Если я установил его с помощью QWidget :: setWindowFlags() beofre show(), он просто ничего не делает (никакого визуального сбоя, но не того, что предназначено). Вызов winId() вместо show() не помог, windowHandle() все еще вернул null. –
Я только что проверил, он хорошо работает в Windows. –