17

Do you know how to hide minimize, maximize and close buttons of title bar in Qt. I especially need to hide it on QMainWindow.

tshepang
  • 12,111
  • 21
  • 91
  • 136
ufukgun
  • 6,889
  • 8
  • 33
  • 55

6 Answers6

27

Set this window flags Qt::Window | Qt::WindowTitleHint | Qt::CustomizeWindowHint

Note, that on some platforms it behaves in different way. For example on Mac OS X it Disables, (not hides) close/minimize/maximize buttons

Kamil Klimek
  • 12,884
  • 2
  • 43
  • 58
8

If you are using Qt qml then, to remove minimize, maximize and close button, set the frameless window flag in the window function in your main.qml file, like below:

flags: Qt.FramelessWindowHint
eyllanesc
  • 235,170
  • 19
  • 170
  • 241
ams
  • 315
  • 4
  • 17
6

Just watch how Window Flags Example works!

iamantony
  • 1,345
  • 17
  • 32
mosg
  • 12,041
  • 12
  • 65
  • 87
2

This can be achived by using an eventFilter on the QEvent::Close event from your 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();
}
Clifford
  • 88,407
  • 13
  • 85
  • 165
lolo67
  • 184
  • 1
  • 1
  • 7
1

For the close button, you can override the closeEvent() of QmainWindow

class MainWindow(QMainWindow):    
    def closeEvent(self, event):
        event.ignore()
        return
Mike
  • 51
  • 5
0

flags: Qt.Dialog | Qt.WindowCancelButtonHint | Qt.WindowCloseButtonHint

this also works for a window item

flags: Qt.Window | Qt.WindowTitleHint

Randall
  • 1
  • 1
  • Based on those names, I wouldn't think those are the correct flags for this... Is that why the OP was having problems finding it? – Taegost Nov 28 '17 at 21:42