2010-04-26 10 views

Odpowiedz

26

Nie wierzę w to. Dodanie jednego programowo jest jednak dość proste.

Jeśli jesteś po prostu chcąc pokazać wiadomość, można użyć: statusBar()->showMessage(tr("Message Here"));, lub alternatywnie, jeśli naprawdę potrzebne QLabel na pasku stanu, można zrobić coś wzdłuż linii:

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

label stanie się dzieckiem o numerze statusBar() i pojawi się w pierwszym pustym miejscu od dołu po lewej (addPermanentWidget(label) spowoduje dodanie go do pierwszego pustego miejsca od dołu po prawej). Jeśli umieścisz QLabel label w nagłówku classes (lub innej nazwie var), będziesz mógł uzyskać dostęp do zmiennej bezpośrednio później (oczywiście usuwając początkowy typ QLabel z pierwszej linii).

+0

Jak zaadaptować kod, aby użyć tłumaczenia "wiadomości"? – Sigur

+0

@Sigur Każdy powód, dla którego czujesz się tak, byłby znacząco różny od czynienia z jakimkolwiek innym QLabel? – Kitsune

+0

Przepraszamy. Próbowałem użyć 'tr' z' QLabel', ale bez powodzenia. Nie wiem jak używać 'QLabel' z tekstem możliwym do przetłumaczenia. – Sigur

5

Nie można nawet ręcznie edytować pliku UI.

+5

Myślę, że jest to defekt w QtDesigner –

+0

Nie wada, ale brakująca funkcja. Niestety QtDesigner nie jest przeznaczony dla interfejsów użytkownika, które mają wielopoziomową strukturę (w tym dodanie QLabel do QStatusbar itp.). – rbaleksandar

5

Nie jest to możliwe z Qt Designer. Ja go rozwiązać, tworząc etykietę w Qt Designer, a później w konstruktorze z moich MainWindows dodać ten wiersz:

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

W mojej aplikacji, nazwa klasy mainwindows jest MainWindowsForm, pasek stanu jest nazwany statusBar a etykieta jest o nazwie informationLabel. Następnie mam:

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