Czy istnieje jakieś rozwiązanie do osadzenia QLabel w QStatusBar za pomocą Qt Designer?Umieszczanie QLabel w QStatusBar za pomocą Qt Designer
Odpowiedz
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).
Nie można nawet ręcznie edytować pliku UI.
Myślę, że jest to defekt w QtDesigner –
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
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);
Jak zaadaptować kod, aby użyć tłumaczenia "wiadomości"? – Sigur
@Sigur Każdy powód, dla którego czujesz się tak, byłby znacząco różny od czynienia z jakimkolwiek innym QLabel? – Kitsune
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