2016-11-08 3 views
0

Я разрабатываю приложение простого лотка, которое должно отображаться поверх всех открытых окон, включая случаи, когда какое-то окно открывается в полноэкранном режиме в osx.Как показать окно qt поверх полноэкранного открытого окна на osx?

Я использую этот код для всплывания окна моего приложения под всеми другими открытыми окнами.

//used flags 
    flags: Qt.FramelessWindowHint | Qt.WindowStaysOnTopHint 

    //code for showing window 
    mainWindow.show() 
    mainWindow.raise() 
    mainWindow.requestActivate() 

обновление: РЕШЕНИЕ

Я нашел решение, просто установив правильный флаг Qt.Tool вместо Qt.WindowStaysOnTopHint. Итак, если у кого-то была такая же проблема, только не используйте эти флаги одновременно в то же время.

+0

И это не работает? – GrecKo

+0

Нет, эти методы помогают только для одиночного рабочего стола, но когда окно открывается в полноэкранном режиме на osx, оно открывается на новом рабочем столе. И задача состоит в том, чтобы показать мое окно на всех из них. –

ответ

0

Использование

void QWidget::setWindowState(Qt::WindowStates windowState) 

и установить "Qt::WindowFullScreen" на весь экран.

Знаете ли вы, что ваш QMainWindow является производным от QWidget.

Таким образом, вы можете использовать вышеуказанную функцию.

Что-то вроде этого:

mainWindow->setWindowState(Qt::WindowFullScreen) 
+0

извините, но этот код должен установить полноэкранный режим окна. В моем случае мне не нужно делать это в полноэкранном режиме, вместо этого мне нужно показать окно окна окна, открытое в полноэкранном режиме на новом рабочем столе. –

+0

Хм ... Наверное, тогда получится другое окно .... Получить позиции сверху слева и внизу справа. И установите в текущее окно перед показом. – Naidu

+0

Используйте что-то вроде move или restoregeometry – Naidu