2010-04-26 21 views

Répondre

26

Je ne crois pas. Il est cependant assez simple d'en ajouter un par programmation.

Si vous êtes juste vouloir montrer un message, vous pouvez utiliser: statusBar()->showMessage(tr("Message Here"));, ou bien si vous avez vraiment besoin d'un QLabel sur la barre d'état, vous pourriez faire quelque chose le long des lignes de:

QLabel *label = new QLabel("Message"); 
statusBar()->addWidget(label); 

label deviendrait un enfant de statusBar(), et apparaîtrait dans le premier emplacement vide en bas à gauche (addPermanentWidget(label) l'ajouterait au premier emplacement vide en bas à droite). Si vous placez QLabel label dans l'en-tête des classes (ou un autre nom de variable), vous pourrez accéder directement à la variable plus tard (en supprimant le type initial QLabel de la première ligne, bien sûr).

+0

Comment adapter le code pour utiliser un 'Message' traduisible? – Sigur

+0

@Sigur Une raison pour laquelle vous vous sentez comme cela serait considérablement différente de celle d'un autre QLabel? – Kitsune

+0

Désolé. J'essayais d'utiliser 'tr' avec' QLabel' mais sans succès. Je ne sais pas comment utiliser 'QLabel' avec du texte translatable. – Sigur

5

Ce n'est pas possible même si vous voulez éditer manuellement le fichier d'interface utilisateur.

+5

Je pense que c'est un défaut dans QtDesigner –

+0

Pas un défaut mais une fonctionnalité manquante. Malheureusement, QtDesigner n'est pas conçu pour les interfaces utilisateur qui ont une structure à plusieurs niveaux (cela inclut l'ajout d'un QLabel à une barre d'état Q, etc.). – rbaleksandar

5

Ce n'est pas possible avec Qt Designer. Je résous en créant l'étiquette un dans Qt Designer et plus tard dans le constructeur de mon MainWindows ajouter cette ligne:

Ui::"class name of my MainWindows"::"name of statusBar Object"->addWidget("Object Name of Label"); 

Dans ma demande, le nom de classe de mainwindows est MainWindowsForm, la barre d'état est nommé statusBar et l'étiquette est nommé informationLabel. Puis j'ai:

Ui::MainWindowsForm::statusBar->addWidget(informationLabel);