c++ qt problem

0

Witam,

zainstalowalem sobie qt i tak nie rozumiem za bardzo takiego konstruktora(jest on generowany automatycznie)

MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)

w naglowku jest:

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
Q_OBJECT

public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();

private:
Ui::MainWindow *ui;
};

no i ja nie za bardzo rozumiem te cześc konstruktora, która jest pogrubiona:/ co tutaj się dzieje bo jak na moj gust to ten konstruktor się "zapętla" bo w momencie w którym rusza "new" to wywołuje on konstruktor klasy MainWindow który z kolei inicjuje wskaźnik ui operatorem new i tak w nieskończoność....no ale oczywiście przecież tak nie jest, a jak jest?

0

new Ui::MainWindow != new MainWindow

0

Ui::MainWindow to klasa odpowiedzialna za skonstruowanie tego co wyklikasz w Qt Designer. To jest taki trick by odseparować kod wygenerowany automatycznie od kodu napisanego przez ciebie.

0

W jakim stopniu znasz C++? Poza zainstalowaniem Qt trzeba poczytać o podstawach tego frameworka. Inaczej albo porzucisz Qt, albo będziesz miał mnóstwo pytań na które odpowiedzi są w większości wstępach do Qt.

0

Witam, C++ znam na tyle ze potrafię formułować pytania:)

Chyba Tomepaw w pełni zrozumiał mój problem. znalazłem częściowo odpowiedź w ui_mainwindow.h, mianowicie w tych liniach:

namespace Ui {
class MainWindow: public Ui_MainWindow {};
} // namespace Ui

tylko nie rozumiem o co chodzi w takim zapisie(to jest kreowane automatycznie nowym projekcie w mainwindow.h):

namespace Ui {
class MainWindow;
}

Ta część kodu w jakiś sposób odnosi się do przestrzeni nazw zawartej w ui_mainwindow.h(tak?) taka składnia jest mi obca, jak pisałem w c++ to używałem takiej:

namespace MyNamespace
{
class MyClass
{

};
}

a tutaj (zgodnie z powyższym "namespace Ui"):

namespace MyNamespace
{
class MyClass;
}

ale może w klasycznym c++ też można tak pisać w jakiś sytuacjach(jak można to króciutki przykładzik może:)
p.s. ma to coś związanego z niejakim "uic"?

0
ksiedzulek napisał(a)

Witam, C++ znam na tyle ze potrafię formułować pytania:)

Chyba Tomepaw w pełni zrozumiał mój problem. znalazłem częściowo odpowiedź w ui_mainwindow.h, mianowicie w tych liniach:

namespace Ui {
class MainWindow: public Ui_MainWindow {};
} // namespace Ui

tylko nie rozumiem o co chodzi w takim zapisie(to jest kreowane automatycznie nowym projekcie w mainwindow.h):

namespace Ui {
class MainWindow;
}

Ta część kodu w jakiś sposób odnosi się do przestrzeni nazw zawartej w ui_mainwindow.h(tak?) taka składnia jest mi obca, jak pisałem w c++ to używałem takiej:

namespace MyNamespace
{
class MyClass
{

};
}

a tutaj (zgodnie z powyższym "namespace Ui"):

namespace MyNamespace
{
class MyClass;
}

ale może w klasycznym c++ też można tak pisać w jakiś sytuacjach(jak można to króciutki przykładzik może:)
p.s. ma to coś związanego z niejakim "uic"?

Na te pytania są odpowiedzi. Podstawy Qt. Chcesz wiedzieć co to uic? Wejdź na stronę Qt. Nie odkrywaj znaczeń - przeczytaj i się dowiedz - zamiast 3 dni zajmie Ci to góra 1 a mniej nerwów a satysfakcja też spora.
http://doc.qt.nokia.com/4.7/index.html
http://doc.qt.nokia.com/4.7/gettingstarted-develop.html
http://doc.qt.nokia.com/4.7/qt-basic-concepts.html

0

@autor: niestety chyba za wcześnie jeszcze na Qt. Nie masz w ogóle podstaw stąd te ... pytania.

0

a ja uważam że jeżeli ktoś potrafi formułować pytania to jest na dobrej drodze do znalezienia odpowiedzi:)

Ponieważ znalazłem na forach zagranicznych podobne wątki, więc jeżeli ktoś tu trafi z podobnym pytaniem to google wyświetli odpowiedź dla hasła:
"Namespaces and Forward Class Declarations "

0

odpowiedź na to pytanie i wiele innych znajdziesz też w każdej książce prawiącej o c++ - a dokładniej o podstawach mechanizmów obiektowych. Zanim zaczniesz programować w Qt poznaj dobrze c++'ową obiektowość bo w przeciwnym wypadku będziesz wpadał kilka razy dziennie na forum z pytaniami, które będą bardziej drażnić niż wnosić coś ciekawego czy to na samym forum, czy też w całej sieci. Jak już tak uparcie chcesz brnąć w ten framework, to zanim zapytasz zerknij w dokumentację bo na 99,99% odpowiedź na większość twoich pytań, które ci się zrodzą w trakcie poznawania Qt, znajdziesz właśnie tam. Poza tym twoje pytanie nie dotyczy jakiegoś szalenie trudnego mechanizmu, czy rzeczy zaawansowanej, wg mnie odpowiedniejszym działem byłoby newbe.

0

Zobacz sobie mój post tutaj:
http://4programmers.net/Forum/C_i_C++/188423-usuwanie_obiektowklas_jak_zwolnic_pamiec

Jak na te 6 pytań możesz odpowiedzieć tak,to jest sens kontynuacji zagłębiania się w Qt

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