[QT, C++] W jaki sposób z poziomu klasy dialogu odwołać się do klasy bazowej?
Ostatnio zmodyfikowano 2010-08-26 15:08
markon Temat założony przez niniejszego użytkownika |
[QT, C++] W jaki sposób z poziomu klasy dialogu odwołać się do klasy bazowej? » 2010-08-24 14:12:40 witam, mam pewne pytanie w jaki sposób z poziomu klasy dialogu odwołać się do kontrolki istniejącej w MainWindow(ui->statusbar)?
P.S MainWindow jest rodzicem tego dialogu |
|
Razi |
» 2010-08-24 17:17:43 musi być public, albo przekazać do tego dialogu wskaźnik do tej kontrolki. Najlepiej przez konstruktor i zabezpieczenie przed null |
|
markon Temat założony przez niniejszego użytkownika |
» 2010-08-24 17:46:33 właśnie czytałem o tym przekazywaniu, jednak zupełnie nie wiem jak go przekazać, mógłby mi ktoś w tym pomóc? pozdrawiam, markon |
|
DejaVu |
» 2010-08-24 19:45:39 Przykład: class CRodzic; class CDialog { CRodzic & m_rodzic; public: CDialog( CRodzic & rodzic ) : m_rodzic( rodzic ) { } }; class CRodzic { void metoda() { CDialog dialog( * this ); } }; |
|
markon Temat założony przez niniejszego użytkownika |
» 2010-08-24 22:25:54 na tym polega mój problem, że: jestem w klasie Dialogu. Teraz potrzebuję dostać się do ui->statusbar (MainWindow) patrząc na ten kod: czyli ze w klasie Dialog mam utworzyć obiekt okna głównego? |
|
DejaVu |
» 2010-08-25 01:23:09 Nie tworzysz okna głównego w dialogu tylko przekazujesz referencję na istniejący obiekt dialoga. Innymi słowy: mówisz dialogowi, że istnieje obiekt rodzic, który będzie istniał tak długo jak będzie istniał obiekt dialog (albo i jeszcze dłużej). W każdym razie gwarantujesz tą konstrukcją, że program został tak zbudowany, że Rodzic nie zostanie szybciej zwolniony niż wszystkie dialogi będące dzieckiem rodzica. Może trochę zakręcone wytłumaczenie, ale powinieneś zrozumieć ideę. |
|
markon Temat założony przez niniejszego użytkownika |
» 2010-08-25 21:06:41 chyba nie sprecyzowałem o co mi dokładnie chodzi. teraz przedstawię dokładniej o co mi chodzi. mam klasę dialogu (oto jej fragment) class Dialog : public QDialog { public: Dialog( QWidget * parent = 0 );
Dialog::Dialog( QWidget * parent ) : QDialog( parent ) , ui( new Ui::Dialog )
następnie: w mainwindow.cpp (jakas metoda) robię tak: Dialog dialog(this); dialog->show();
jesli teraz jestem w konstruktorze klasy dialog zupełnie nie wiem jak odwołać się do kontrolek z okna głównego np. ui->statusbar->(tu jakas metoda) i teraz powinienem przekazać referencję na istniejący obiekt dialoga jeśli ktoś by mógł opisać mi jeszcze raz po kolej co i jak byłbym wdzięczny pozdrawiam, markon |
|
DejaVu |
» 2010-08-25 21:10:54 Skoro przekazałeś wskaźnik do parenta to wystarczy w klasie CDialog zrobić:
parent->statusbar->bleble() |
|
« 1 » 2 |