2010-12-09 64 views
3

Comment puis-je centrer le texte dans QStatusBar? Par défaut, il est toujours aligné à gauche. Je sais que je peux ajouter un QLabel et définir l'alignement, mais je veux utiliser la méthode du texte brut et .showMessage (QString, int), afin que je puisse ajouter la valeur du délai d'expiration.qt centre de la barre d'état aligné?

Répondre

2

Un QStatusBar a trois fonctions de noter ici:

addPermanentWidget - Places un droit widget aligné

addWidget - Place gauche widget aligné qui peut être obscurci par les messages d'état

showMessage - Affiche message d'état

Ces normes sont bien établies pour les barres d'état. Tandis que vous pourriez bidouiller loin pour obtenir ce que vous recherchez, je vous suggérerais de reconsidérer vos besoins. Peut-être que votre QLabel devrait être placé avec addPermanentWidget à la place?

Jetez un oeil à la documentation pour plus d'informations: http://doc.qt.io/qt-5/qstatusbar.html

+0

ok. mais comment puis-je ajouter le timeout si j'utilise addPermanenetWidget? – ZolaKt

+1

Avec QTimer. démarrez-le avec singleshot lorsque le message affiché sur qlabel, et créer simplement une fonction qui nettoie le texte de l'étiquette sur le délai d'attente. – Raiv

+0

@ZolaKt: Que voulez-vous dire? Essayez-vous d'afficher le texte temporaire dans un QLabel? Pourquoi ne pas simplement utiliser la fonction showMessage comme elle était destinée? – OliJG

3

Si vous voulez juste pour centrer le message lui-même dans l'ensemble statusBar, se présenter comme suit:

QLabel* statusLabel = new QLabel("Your Message"); 
statusBar()->addWidget(statusLabel,1); 

Ce paramètre supplémentaire 1 étend votre Étiquette à la largeur complète de la barre d'état.

Salutations