Qt скрыть кнопки сворачивания, разворачивания и закрытия

Знаете ли вы, как скрыть кнопки сворачивания, разворачивания и закрытия строки заголовка в Qt. Мне особенно нужно скрыть это на QMainWindow.

5 ответов

Установите флаги этого окна Qt::Window | Qt::WindowTitleHint | Qt::CustomizeWindowHint

Обратите внимание, что на некоторых платформах он ведет себя по-разному. Например, в Mac OS X он отключает (не скрывает) кнопки закрытия / сворачивания / разворачивания

Если вы используете Qt qml, тогда, чтобы удалить кнопку минимизации, максимизации и закрытия, установите флаг безрамного окна в оконной функции в вашем файле main.qml, как показано ниже:

flags: Qt.FramelessWindowHint

Просто посмотрите, как работает пример Window Flags!

Это может быть достигнуто с помощью eventFilter для события QEvent::Close из вашего MainWindow

bool MainWindow::eventFilter(QObject *obj, QEvent *event) {

    if (event->type() == QEvent::Close) {
        event->ignore();
        doWhateverYouNeedToDoBeforeClosingTheApplication();
        return true;
    }
    return QMainWindow::eventFilter(obj, event);
}

void MainWindow::doWhateverYouNeedToDoBeforeClosingTheApplication() {
    // Do here what ever you need to do
    // ...
    // ...

    // and finally quit
    qApp->quit();
}

Для кнопки закрытия вы можете переопределить closeEvent() QmainWindow

class MainWindow(QMainWindow):    
    def closeEvent(self, event):
        event.ignore()
        return

Флаги: Qt.Dialog | Qt.WindowCancelButtonHint | Qt.WindowCloseButtonHint

это также работает для элемента окна

флаги: Qt.Window | Qt.WindowTitleHint

Другие вопросы по тегам