No i trafił mi się problem z konstruktorem klasy pochodnej. Siedzę już nad nim parę godzin, a pewnie rozwiązanie jest śmiesznie banalne... O co chodzi:
Tworze sobie w Qt okno QMainWindow w tym oknie mam parę przycisków, menubar itd. Do tego chcę, umieścić w QMainWindow tablice z klasy QTableWidget. Z Racji tego, że przewiduje, dosyć rozbudowane działanie na tej tablic (własne metody typu : dodaj pozycje, usuń, edytuj itd) stworzyłem osobną klasę, która dziedziczy po QTableWidget
class tablica
: public QTableWidget
{
Q_OBJECT
public:
tablica();
~tablica();
void dodajdor();
void usundor();
void edytujdor();
signals:
public slots:
};
udało mi się stworzyć obiekt w main() poprzez jawne wywołanie typu
tablica nowatablica;
nowatablica.show();
jednak gdy zamierzam stworzyć obiekt w klasie głównego okna dziedziczącej po QMainWindow w sposób dynamiczny tzn:
w pliku
oknogl.h
tablica * nowatablica;
to wyskakuje bład
nowatablica does not name a type
co to znaczy to wiem, ale nie potrafię z tym dojść co nie tak.
Dodatkowo mam problem z tym, aby nowo stworzony obiekt typu tablica wyświetlić w oknie rodzica QMainWindow.
Definicje konstruktora w klasie tablica typu
tablica(); // konstruktor domniemany ponieważ tablica jest pochodną
w pliku tablica.cpp definiuje konstruktor z lista inicjalizacyjna na której:
tablica::tablica():QObject(parent)
po tym rozpisaniu mojego problemu reasumując:
-chce stworzyć osobną klasę tablica (udało się)
-chcę aby można był stworzyć obiekt klasy tablica dynamiczne w klasie okna głównego dziedziczącego po QMainWindol (powyższy bład does not...)
-chce, aby stworzona tablica była dzieckiem QMainWindow, a nie żyła osobno jak to dzieje się teraz po jawnym wywołaniu w main();
ps. Panie moderatorze, przykro mi, ale nie widzę pod oknem edytowym, żadnych dodatkowych opcji, które pozwoliły by mi na umieszczanie kodu w odpowiednim polu.
Zielona ramka pod "Załóż nowy temat"... Przy edytowaniu posta nie ma. - xevuel |
EDIT: Rozgryzłem to. Po prostu łyk kawy i chyba głaskanie kota.
W pierwszym wypadku należy zdeklarować nazwę klasy w pliku nagłówkowym okna głównego czyli poporstu
class tablica;
W drugim wypadku, aby moja tablica z klasy tablica była dzieckiem okna dziedziczącego z QMainWindol deklaracja konstruktora powinna wyglądać tak:
tablica( QWidget * parent = 0 );
a definicja tak:
tablica::tablica( QWidget * parent )
: QTableWidget( parent )
amen.