[Qt 4.5 + Qt Creator] StatusBar - dostęp z innej klasy

0

Witam,
Zaczynam programowanie z Qt (używając przy tym Qt Creator) i natknąłem się na jeden problem. Otóż nie mogę ze swojej klasy "dostać się" (czyt. ustawić wiadomości) w statusbarze znajdującym się na głównym (i zarazem jedynym) oknie.
Przy kodzie
OknoGlowne::statusBar() -> showMessage("Zalogowano", 5000);Kompilator wypluwa mi:
error: cannot call member function ‘QStatusBar* QMainWindow::statusBar() const’ without object
Dodam, że OknoGlowne to okno klasy QMainWindow.
Mam nadzieję, że jasno opisałem w czym problem :)
Z góry dziękuję za pomoc.

0

Czytać nie potrafisz? Musisz mu podać wskaźnik na okno!
Czyli albo wewnątrz metody niestatycznej twojego głównego okna:

statusBar()->showMessage("Zalogowano", 5000);

Domyślny wskaźnik this.
albo w innym miejscu przez:

wskaznikNaOknoo->statusBar()->showMessage("Zalogowano", 5000);
0

Utwórz w klasie głównego okna slot aktualizujący pasek stanu, w drugiej klasie sygnał i przy tworzeniu obiektu połącz je ze sobą, np.

MojaKlasa* xxx = new MojaKlasa(this);
connect(xxx, SIGNAL(sendMessage(QString)), this, SLOT(updateStatusbar(QString)));

gdzie sendMessage i updateStatusbar to Twoje sygnały i sloty, chyba jasne jest co mają robić.

0

MarekR22 nie musisz od razu na mnie naskakiwać, dopiero się uczę ;)
Zrobię to za pomocą sygnałów i slotów, dzięki Qt fanboy.

0

Jak już korzystać ze slotów i sygnałów to:

OknoGlowne::OknoGlowne(QObject *parent)
       QMainWindow(parent)
{
     ....
     Q_ASSERT( connect(
                cosCoMaWywolacSygnal, SIGNAL(jakisSygnalOdpowiedniDlaNadawcy(const QString &, int)),  // brak danych dla szczegółów sygnał musi nadawać co najmniej QStringa
                statusBar(), SLOT(showMessage(const QString &, int))
                ));
     ....
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1