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
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))
));
....
}