Generelle Verständnisfragen zu QGraphicsView & Co.
Verfasst: 22. August 2009 03:09
Gute Abend oder Nacht zusammen! 
a) Erstmal was ich Umsetzen will
Ist im Prinzip ganz einfach. Ich hab ein 480x272 großes Fenster. Auf der rechten Seite sollen 4 Buttons sein die ggf. animiert werden sollen. Aber das Wichtigste ist, dass ich die Buttons von rechts nach links in einen bestimmten Bereich droppen kann.
b) So erstmal der Code
Erstmal vor weg. Die Ui nutze ich nicht.
1.) Führt dieser Ansatz zu meinem Ziel? Denn jetzt fände ich es schon schwer die Buttons zu draggen. Bekommt jeder Button eine eigene Scene?! Oder ist das schon richtig, dass ich alle Buttons in einer Scene habe?!
2.) Wie kann ich die Scene ordentlich positionieren? Ich hab es mit setSceneRect(); versucht. Allerdings nur mit mässigen Erfolg. Die Scene fühlt nämlich das komplette Fenster. (Die Leiste ist 78x272)
Ich dachte erst das man die Scene so einstellt
scene->setSceneRect(402,0,72,272);
Allerdings klebt sie nach wie vor ohne Änderung auf der linken Seite. Bei
scene->setSceneRect(0,0,480,272);
So ist die Scene zwar über die komplette Fensterbreite, aber ich kann die Grafiken wenigstens gewünscht ausrichten. Was mach ich falsch?!
LG Max[/code]
a) Erstmal was ich Umsetzen will
Ist im Prinzip ganz einfach. Ich hab ein 480x272 großes Fenster. Auf der rechten Seite sollen 4 Buttons sein die ggf. animiert werden sollen. Aber das Wichtigste ist, dass ich die Buttons von rechts nach links in einen bestimmten Bereich droppen kann.
b) So erstmal der Code
Code: Alles auswählen
#ifndef DRAGDROPDEMO_H
#define DRAGDROPDEMO_H
#include <QtGui/QWidget>
#include <QMessageBox>
#include <QGraphicsScene>
#include <QGraphicsView>
#include <QGraphicsPixmapItem>
namespace Ui
{
class DragDropDemo;
}
class DragDropDemo : public QWidget
{
Q_OBJECT
public:
DragDropDemo(QWidget *parent = 0);
~DragDropDemo();
private:
Ui::DragDropDemo *ui;
};
#endif // DRAGDROPDEMO_H
Code: Alles auswählen
#include "dragdropdemo.h"
#include "ui_dragdropdemo.h"
DragDropDemo::DragDropDemo(QWidget *parent)
: QWidget(parent), ui(new Ui::DragDropDemo)
{
ui->setupUi(this);
QGraphicsView *view =new QGraphicsView(this);
view->setStyleSheet("background-color: #EAEAEA; border: 1px");
QGraphicsScene *scene = new QGraphicsScene();
scene->setSceneRect(0,0,480,272);
/* Leiste hinzufügen */
QGraphicsPixmapItem *leistenItem = new QGraphicsPixmapItem();
leistenItem->setPixmap(QPixmap ("../images/leiste.png"));
leistenItem->setPos(402,0);
scene->addItem(leistenItem);
/* Buttons */
QGraphicsPixmapItem *b1Item = new QGraphicsPixmapItem();
b1Item->setPixmap(QPixmap ("../images/b1.png"));
b1Item->setPos(420,12);
scene->addItem(b1Item);
QGraphicsPixmapItem *b2Item = new QGraphicsPixmapItem();
b2Item->setPixmap(QPixmap ("../images/b2.png"));
b2Item->setPos(420,77);
scene->addItem(b2Item);
QGraphicsPixmapItem *b3Item = new QGraphicsPixmapItem();
b3Item->setPixmap(QPixmap ("../images/b3.png"));
b3Item->setPos(420,142);
scene->addItem(b3Item);
QGraphicsPixmapItem *b4Item = new QGraphicsPixmapItem();
b4Item->setPixmap(QPixmap ("../images/b4.png"));
b4Item->setPos(420,207);
scene->addItem(b4Item);
view->setScene(scene);
view->show();
}
DragDropDemo::~DragDropDemo()
{
delete ui;
}
Erstmal vor weg. Die Ui nutze ich nicht.
1.) Führt dieser Ansatz zu meinem Ziel? Denn jetzt fände ich es schon schwer die Buttons zu draggen. Bekommt jeder Button eine eigene Scene?! Oder ist das schon richtig, dass ich alle Buttons in einer Scene habe?!
2.) Wie kann ich die Scene ordentlich positionieren? Ich hab es mit setSceneRect(); versucht. Allerdings nur mit mässigen Erfolg. Die Scene fühlt nämlich das komplette Fenster. (Die Leiste ist 78x272)
Ich dachte erst das man die Scene so einstellt
scene->setSceneRect(402,0,72,272);
Allerdings klebt sie nach wie vor ohne Änderung auf der linken Seite. Bei
scene->setSceneRect(0,0,480,272);
So ist die Scene zwar über die komplette Fensterbreite, aber ich kann die Grafiken wenigstens gewünscht ausrichten. Was mach ich falsch?!
LG Max[/code]