Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[QT, C++] W jaki sposób z poziomu klasy dialogu odwołać się do klasy bazowej?

Ostatnio zmodyfikowano 2010-08-26 15:08
Autor Wiadomość
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
P-21157
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
P-21160
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
P-21161
DejaVu
» 2010-08-24 19:45:39
Przykład:
C/C++
class CRodzic;
class CDialog
{
    CRodzic & m_rodzic;
public:
    CDialog( CRodzic & rodzic )
        : m_rodzic( rodzic )
    { }
};
class CRodzic
{
    void metoda()
    {
        CDialog dialog( * this );
    }
};
P-21162
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?
P-21166
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ę.
P-21172
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)
C/C++
class Dialog
    : public QDialog
{
public:
    Dialog( QWidget * parent = 0 );
    //...

C/C++
//dialog.cpp
Dialog::Dialog( QWidget * parent )
    : QDialog( parent )
    , ui( new Ui::Dialog ) /*naglowek definicji konstruktora*/
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
P-21237
DejaVu
» 2010-08-25 21:10:54
Skoro przekazałeś wskaźnik do parenta to wystarczy w klasie CDialog zrobić:

parent->statusbar->bleble()
P-21239
« 1 » 2
  Strona 1 z 2 Następna strona