2010-07-09 22 views
8

Savez-vous comment masquer, agrandir et fermer les boutons de la barre de titre dans Qt. Je dois surtout le cacher sur QMainWindow.Qt hide réduit, agrandit et ferme les boutons

+1

Pourriez-vous mentionner pourquoi vous avez besoin de le faire? –

+0

Je ne veux pas que l'utilisateur ferme mon application en appuyant sur x dans le coin. Je veux qu'il fasse certains processus avant de quitter l'opération. – ufukgun

Répondre

2

Il suffit de regarder comment fonctionne Window Flags Example!

+1

merci mosg. en fait mon principal problème est de cacher le bouton de fermeture de la fenêtre principale. – ufukgun

14

Set drapeaux de cette fenêtre Qt::Window | Qt::WindowTitleHint | Qt::CustomizeWindowHint

Notez que sur certaines plates-formes, il se comporte de manière différente. Par exemple sous Mac OS X, il désactive, (non peaux) fermer/cacher/boutons

2

Cela peut être achived en utilisant un eventFilter sur l'événement QEvent :: A proximité de votre 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

Si vous utilisent Qt qml alors, pour supprimer minimiser, maximiser et bouton de fermeture, définissez l'indicateur de fenêtre sans cadre dans la fonction de fenêtre dans votre fichier main.qml, comme ci-dessous:

flags: Qt.FramelessWindowHint 
0

drapeaux: Qt.Dialog | Qt.WindowCancelButtonHint | Qt.WindowCloseButtonHint

cela fonctionne aussi pour un élément de fenêtre

drapeaux: Qt.Window | Qt.WindowTitleHint

+0

Sur la base de ces noms, je ne pense pas que ce sont les bons indicateurs pour cela ... Est-ce la raison pour laquelle l'OP avait du mal à le trouver? – Taegost