Как сделать окно «Инструмент» всегда поверх двух или более главных окон?

Быстрый вопрос

В проекте QT C++ есть 2 основных окна (фокус может быть установлен независимо от любого из них) и окно tool, которое должно быть поверх 2 основных окон.

Как реализовать такую ​​функцию?

Подробный вопрос:

Для одного главного окна и одного окна инструментов решить довольно просто:

#include <QApplication>
#include <QWidget>

int main( int n, char* args[])
{
    QApplication app(n, args);
    QWidget mainWindow;
    QWidget subWindow(&mainWindow);
    subWindow.setWindowFlags(subWindow.windowFlags() | Qt::Tool);
    mainWindow.show();
    subWindow.show();


    return app.exec();
}
  • Главное окно всегда находится под окном инструментов.
  • Возможно взаимодействие с главным окном
  • сворачивание/закрытие главного окна повлияет на окно инструментов
  • Другое приложение может закрывать главное окно или оба окна (они не самые верхние)

Хотелось бы такую ​​же функцию, но с 2-мя главными окнами. Представьте себе видеопроигрыватель, в котором окно инструментов обеспечивает управление «воспроизведением/остановкой» обоих изображений:

  • Каждое главное окно имеет одинаковый вес фокуса: фокус может быть передан любому из них, который будет перекрывать другое окно, но не окно инструментов.
  • Инструмент всегда находится поверх двух других.

person Adrian Maire    schedule 22.01.2016    source источник
comment
Это может помочь: doc.qt.io/qt-4.8/qwidget.html# поднять — вы можете raise() окно инструментов поднять над остальными. Также см. примечание к этой функции   -  person Thalia    schedule 04.03.2016
comment
Да, похоже, в этом суть. Даже если немного некрасиво. Если вы напишете ответ с ним, я приму / проголосую за него :-)   -  person Adrian Maire    schedule 06.03.2016


Ответы (2)


Вы можете raise() окно инструментов поверх других.

Это может помочь: аннулировать документацию QWidget::raise()

Также см. «Примечание» к этой функции.

person Thalia    schedule 07.03.2016

Добавьте Qt::WindowStaysOnTopHint во флаги

person Alexander Chernin    schedule 22.01.2016
comment
Это довольно плохая идея: никакие другие окна не могли покрыть мое приложение. С другой стороны, если сделать мое приложение самым верхним с диспетчером процессов, это нарушит это правило. - person Adrian Maire; 22.01.2016