2015-06-28 3 views
1

Мне нужно использовать 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).

Спасибо!

+0

Вы пробовали устанавливать флажки окон ПЕРЕД показом окна? Я знаю, по крайней мере, одну ошибку в Qt в OS X, связанную с изменением флажков окна для отображаемого окна - https://bugreports.qt.io/browse/QTBUG-45938. –

+0

Спасибо за ваш комментарий! Да, я пробовал, но windowHandle() возвращает null в этом случае. Если я установил его с помощью QWidget :: setWindowFlags() beofre show(), он просто ничего не делает (никакого визуального сбоя, но не того, что предназначено). Вызов winId() вместо show() не помог, windowHandle() все еще вернул null. –

+0

Я только что проверил, он хорошо работает в Windows. –

ответ

0

Эта проблема, по-видимому, исправлена ​​в Qt 5.5.0.

Смежные вопросы