2010-07-09 7 views
8

Czy wiesz, jak ukryć zminimalizować, zmaksymalizować i zamknąć przyciski paska tytułu w Qt. Szczególnie muszę ukryć to na QMainWindow.Qt ukryj przyciski minimalizacji, maksymalizacji i zamknięcia

+1

mógłbyś wspomnieć, dlaczego trzeba to zrobić? –

+0

Nie chcę, aby użytkownik zamknął moją aplikację, naciskając x na rogu. Chcę, żeby wykonał pewne procesy przed zakończeniem operacji. – ufukgun

Odpowiedz

14

ustawić to okno flagi Qt::Window | Qt::WindowTitleHint | Qt::CustomizeWindowHint

Zauważ, że na niektórych platformach zachowuje się w inny sposób. Na przykład w systemie Mac OS X to wyłączenie (nie ukrywa) bliskie/minimalizacji/maksymalizacji przyciski

2

ten może być osiągany przy stosując eventFilter na QEvent :: Blisko zdarzeń z 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(); 
} 
3

jeśli używasz Qt QML następnie, aby usunąć minimalizacji, maksymalizacji i przycisk zamykania, ustaw bezramowe okna flagę w funkcji okna w pliku main.qml, jak poniżej:

flags: Qt.FramelessWindowHint 
0

flagi: Qt.Dialog | Qt.WindowCancelButtonHint | Qt.WindowCloseButtonHint

to działa również dla elementu okiennej

flagi: Qt.Window | Qt.WindowTitleHint

+0

Na podstawie tych nazw, nie sądzę, że są to poprawne flagi dla tego ... Czy to dlatego OP miał problemy ze znalezieniem? – Taegost

Powiązane problemy