Je peux définir le texte de la barre d'état du parent avec cette fonction, j'ai écritDéfinir le texte de la barre d'état du parent?
void EditorWindow::setStatusBarText(const QString& text) {
statusBar()->showMessage(text);
}
Appelé comme celui-ci (de l'enfant)
((EditorWindow*) parent())->setStatusBarText(tr("%1, %2").arg(mousePos.x(), 0, 'f', 2).arg(mousePos.y(), 0, 'f', 2));
Mais je suis assez sûr que casse quelques principes de conception. Par exemple, que se passe-t-il si parent()
n'est pas un EditorWindow*
?
Alors, quelle est la solution pour cela? Forcer l'utilisateur à passer une référence à un EditorWindow
lors de la création pour s'assurer que le parent est du type correct?
Oh! Je commençais juste à penser aux signaux/slots mais je l'avais en arrière dans ma tête. Je peux le connecter dans le parent et cela allège le problème. Brillant! Merci :) – mpen
Vous n'avez pas réellement besoin de la fonction setStatusBarText, vous pouvez utiliser showMessage directement: connect (editorView, SIGNAL (statusBarUpdate (QString)), statusBar(), SLOT (showMessage (QString))); – mpen
@Mark - Pensez-y comme le recv doit autoriser la connexion et il doit avoir l'emplacement. Le signal peut provenir de n'importe où et pourrait ne jamais exister ou ne jamais être utilisé. –