Cześć, witamy na forum
To pytanie w zasadzie z podstaw podstaw c++. Po kolei więc:
Jest sobie jakaś klasa, która ma metodę menuBar(), która zwraca wskaźnik do instancji klasy QMenuBar. Jeśli jesteś w jednej z jej innych metod to możesz się do niej odwołać bezpośrednio, a kompilator po cichu wywoła to na wskaźniku this:
QMenuBar* mb = menuBar();
//kompilator po cichu robi z tego:
QMenuBar* mb = this->menuBar();
Mając wskażnik do obiektu QMenuBar możesz wywołać na nim metodę addMenu():
QMenuBar* mb = menuBar();
mb->addMenu("whatever");
W środku metoda addMenu wygląda (w sporym uproszczeniu) tak:
QMenu* MenuBar::addMenu(const QString& text ) {
return new QMenu(text, this);
}
czyli tworzy nowe menu należące do paska menu i zwraca wskaźnik do niego.
Ponieważ metoda addMenu() zwraca wskaźnik to możemy go sobie zapisać:
QMenuBar* mb = menuBar();
QMenu* toolMenu = mb->addMenu("whatever");
Ponieważ wskaźnik mb jest nam potrzebny tylko w tym jednym miejscu i tylko raz to możemy go sobie pominąć i w miejscu, gdzie jest użyty wstawić kod, który go zwraca:
QMenu* toolMenu = menuBar()->addMenu("whatever");
Czyli podsumowując:
QMenu* toolMenu =
menuBar() //to zwraca wskaznik na QMenuBar
->addMenu("whatever"); //to wywołuje metodę na obiekcie wskazywanym przez ten wskaźnik