programista12 Temat założony przez niniejszego użytkownika |
» 2011-01-21 19:44:09 Dzięki wielkie. Jeszcze tylko jedno pytanko: mam klasę Mapa, czy dobrym pomysłem jest, aby dziedziczyła z klas QGraphicsScene i QGraphicsItem? |
|
malan |
» 2011-01-21 19:47:00 Ja tam bym je dał jako pola prywatne. |
|
programista12 Temat założony przez niniejszego użytkownika |
» 2011-01-21 20:28:47 Popróbowałem trochę z tym i mam problem. Podczas kompilacji wyskakują błędy: "undefined reference to 'vtable for Mapa'" "collect2: Id returned 1 exit status" Kod w pliku mapa.h: class Mapa : public QGraphicsScene { Q_OBJECT private: QGraphicsScene * map_scene; public: QGraphicsScene * GetMapScene(); void Show(); Mapa(); protected: virtual void mousePressEvent( QGraphicsSceneMouseEvent * event ); };
Plik mapa.cpp: QGraphicsScene * Mapa::GetMapScene() { return this->map_scene; }
void mousePressEvent( QGraphicsSceneMouseEvent * event ) { map_scene->addRect( 30, 30, 100, 100 ); }
void Mapa::Show() { map_scene->addRect( 0, 0, 10, 10 ); }
Mapa::Mapa() { map_scene = new QGraphicsScene( 0, 0, 1024, 768 ); map_scene->setBackgroundBrush( Qt::gray ); }
W funkcji main: QApplication a( argc, argv ); MainWindow w; Mapa mapka; w.show(); mapka.Show(); w.GVSetScene( mapka.GetMapScene() ); return a.exec();
|
|
BlackDante |
» 2011-01-21 22:45:39 o ile się nie mylę to najpierw musisz stworzyć obiekt klasy QGraphicsView do którego za pomocą funkcji addScene czy tez za pomocą konstruktora QGraphicsView(QGrpahicsScene &scene); dodajesz i dopiero QGraphicsView możesz wyświetlać. bo QGraphicsScene nie zawiera funkcji show(); |
|
programista12 Temat założony przez niniejszego użytkownika |
» 2011-01-22 09:06:04 A w którym miejscu miałbym utworzyć ten obiekt i jak miałoby to wyglądać? |
|
malan |
» 2011-01-22 12:05:47 Tak btw, to dziedziczenie jest niepotrzebne. Albo jedno albo drugie- albo tworzysz obiekt klasy QGraphicsScene i dajesz go jako pole klasy Mapa albo dziedziczysz. Twoje rozwiązanie umożliwia coś takiego: Mapa map; map.addRect( 69, 69, 69, 69 ); map.Show(); Ma to jakiś sens? Ja nie widzę żadnego. Mógłby mi ktoś pokazać, czy to ma jakieś sensowne zastosowanie, bo ja naprawdę nie wiem :(. /edit: A w którym miejscu miałbym utworzyć ten obiekt i jak miałoby to wyglądać? |
QGraphicsScene * map_scene = new QGraphicsScene( 0, 0, 1024, 768 ); map_scene->setBackgroundBrush( Qt::gray );
QGraphicsView * view = new QGraphicsView( map_scene, parent );
Jakoś tak... |
|
programista12 Temat założony przez niniejszego użytkownika |
» 2011-02-06 17:11:53 Odświeżam. Mógłby ktoś podać kod przykładowej klasy, żeby można było nią zmieniać scenę w QGraphicsView, albo żeby posiadała zmienną typu QGraphicsScene, żeby można nią było obsługiwać zdarzenia myszki, rysować po scenie? Ja się z tym męczę, ale nic mi nie wychodzi. Te zdarzenia nie działają. Bardzo proszę o pomoc. Ty, pixelmaster, dużo mówiłeś na ten temat, może mógłbyś napisać przykładową klasę? Byłbym wdzięczny. |
|
BlackDante |
» 2011-02-06 19:05:04 |
|
1 « 2 » 3 |