in meiner Anwendung habe ich einen QWorkspace, in dem verschiedene Diagramme und eine "Karte des Himmels" (sog. Skyplot) dargestellt werden sollen. Die Diagramme funktionieren, aber mit dem Skyplot gibt es noch Schwierigkeiten.
Der Skyplot soll ein QWidget sein, das lediglich ein QGraphicsView beinhaltet (und ganz ausfüllt). Wenn die Grösse des Widgets verändert wird, soll auch der Inhalt angepaßt werden.
Hier mein erster Versuch:
Header-File:
------------
Code: Alles auswählen
#ifndef ARANEAGUI_SKYPLOT_CLASS_H
#define ARANEAGUI_SKYPLOT_CLASS_H
#include <QWidget>
#include <QGraphicsScene>
#include <QGraphicsView>
#include <QGraphicsEllipseItem>
//#include <QGridLayout>
class araneagui_skyplot_class : public QWidget {
public:
araneagui_skyplot_class(QWidget *parent);
// protected:
// void resizeEvent(QResizeEvent event);
private:
void paint();
};
#endifImplementierung:
----------------
Code: Alles auswählen
#include "araneagui_skyplot_class.h"
araneagui_skyplot_class::araneagui_skyplot_class(QWidget* parent = 0) : QWidget(parent) {
resize(200, 200);
paint();
}
//void araneagui_skyplot_class::resizeEvent(QResizeEvent event) {
// qDebug( "RESIZE" );
//}
void araneagui_skyplot_class::paint() {
QGraphicsScene* scene = new QGraphicsScene;
scene->setSceneRect( -100.0, -100.0, 200.0, 200.0 );
QGraphicsEllipseItem *item = new QGraphicsEllipseItem( 0, scene );
item->setRect( -50.0, -50.0, 100.0, 100.0 );
QGraphicsEllipseItem *item2 = new QGraphicsEllipseItem( 0, scene );
item2->setRect( -20.0, -50.0, 10.0, 10.0 );
QGraphicsView* view = new QGraphicsView(scene, this);
view->setRenderHints( QPainter::Antialiasing );
view->show();
}Muß ich resizeEvent anpassen, mit Layouts und mit QGraphicsView::fitInView arbeiten? Bin für jede Hilfe sehr dankbar!
Gruß,
Markus