2017-08-21 2 views
1

J'ai plusieurs fenêtres d'interface utilisateur dans mon projet QT. Lorsqu'une nouvelle fenêtre d'interface utilisateur s'ouvre, la fenêtre d'interface utilisateur précédente doit être fermée, c'est-à-dire qu'à chaque instant, une seule fenêtre d'interface utilisateur doit être ouverte. Comment cela peut-il être fait?Comment fermer la fenêtre de l'interface utilisateur parent lorsque la fenêtre de l'interface utilisateur enfant est ouverte dans QT

+0

Jetez un oeil à QStackedWidget car il peut s'adapter à votre cas d'utilisation et préciser votre question sinon. – Schuh

Répondre

1

Je l'ai fait avant et je vous suggère de ne pas fermer (supprimer) l'interface utilisateur.

il suffit de le cacher et quand vous en avez besoin montrer à nouveau.

vérification de ce code:

lorsque l'utilisateur clique pour voir seconde interface utilisateur:

void MainApp::on_btnSettings_clicked() 
{ 
    this->hide(); 
    settingsManager = new SettingsManager(); // put this line in constructor 
    settingsManager->show(); 
} 

sur la deuxième interface utilisateur sur le formulaire de fermeture (ou bouton de retour) émettent un signal:

void SettingsManager::closeEvent(QCloseEvent *event) 
{ 
    emit settingsBackToMainApp(); 
} 

sur Main cacher la deuxième classe et le spectacle principal:

void MainApp::settingsBackToMainApp() 
{ 
    settingsManager->hide(); 
    this->show(); 
} 

signal de connexion à fente:

connect(settingsManager,&SettingsManager::settingsBackToMainApp,this,&MainApp::settingsBackToMainApp); // put this line in constructor