bamdenied
22nd February 2017, 14:28
Dear Community,
if you use addItem and addWidget on the same Scene,
the items are drawn outside the viewport(resize the Window).
If you use only one member the items are drawn as expected.
Is this behaviour a Bug?
Can someone explain why this happen?
Example:
#include <QGraphicsView>
#include <QPushButton>
#include <QGraphicsProxyWidget>
#include <QVBoxLayout>
#include <QDialog>
class Dialog : public QDialog
{
Q_OBJECT
public:
explicit Dialog(QWidget *parent = 0);
private:
};
Dialog::Dialog(QWidget *parent) :
QDialog(parent)
{
QGraphicsView* view = new QGraphicsView;
QGraphicsScene* scene = new QGraphicsScene;
QPushButton* test = new QPushButton;
test->setText("test1");
QPushButton* test2 = new QPushButton;
test2->setText("test2");
QGraphicsProxyWidget* pw = scene->addWidget(test);
QGraphicsProxyWidget* pw2 = scene->addWidget(test2);
pw2->setPos(300,300);
QGraphicsRectItem* rect = new QGraphicsRectItem(QRect(40,40, 100, 100));
scene->addItem(rect);
view->setScene(scene);
QVBoxLayout* layout = new QVBoxLayout;
layout->addWidget(view);
setLayout(layout);
}
if you use addItem and addWidget on the same Scene,
the items are drawn outside the viewport(resize the Window).
If you use only one member the items are drawn as expected.
Is this behaviour a Bug?
Can someone explain why this happen?
Example:
#include <QGraphicsView>
#include <QPushButton>
#include <QGraphicsProxyWidget>
#include <QVBoxLayout>
#include <QDialog>
class Dialog : public QDialog
{
Q_OBJECT
public:
explicit Dialog(QWidget *parent = 0);
private:
};
Dialog::Dialog(QWidget *parent) :
QDialog(parent)
{
QGraphicsView* view = new QGraphicsView;
QGraphicsScene* scene = new QGraphicsScene;
QPushButton* test = new QPushButton;
test->setText("test1");
QPushButton* test2 = new QPushButton;
test2->setText("test2");
QGraphicsProxyWidget* pw = scene->addWidget(test);
QGraphicsProxyWidget* pw2 = scene->addWidget(test2);
pw2->setPos(300,300);
QGraphicsRectItem* rect = new QGraphicsRectItem(QRect(40,40, 100, 100));
scene->addItem(rect);
view->setScene(scene);
QVBoxLayout* layout = new QVBoxLayout;
layout->addWidget(view);
setLayout(layout);
}