Hi,
I am trying to create a custom GraphicsItem that will set its width autocratically to the Scene width.
sceneBoundingRect()
sceneBoundingRect()
To copy to clipboard, switch view to plain text mode
sounds like what I need, but my Program crashes all the time.
#include "customparentitem.h"
#include <QDebug>
customparentitem::customparentitem()
{
setFlag(ItemIsMovable);
}
QRectF customparentitem
::boundingRect() const {
qDebug() << this->sceneBoundingRect();
}
{
QRectF temprec
=boundingRect
();
painter->drawRoundedRect(temprec.x(),temprec.y(),temprec.width(),temprec.height(),8,8);
}
#include "customparentitem.h"
#include <QDebug>
customparentitem::customparentitem()
{
setFlag(ItemIsMovable);
}
QRectF customparentitem::boundingRect() const
{
qDebug() << this->sceneBoundingRect();
return QRectF(0,0,200,30);
}
void customparentitem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
{
QRectF temprec=boundingRect();
painter->drawRoundedRect(temprec.x(),temprec.y(),temprec.width(),temprec.height(),8,8);
}
To copy to clipboard, switch view to plain text mode
The returned BoundingRect is just temporary until I get the desired output with qDebug().
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow
::MainWindow(QWidget *parent
) : ui(new Ui::MainWindow),
customitem(new customparentitem)
{
ui->setupUi(this);
ui
->graphicsView
->setViewportUpdateMode
(QGraphicsView::FullViewportUpdate);
ui
->graphicsView
->setRenderHint
(QPainter::Antialiasing);
scene->setSceneRect(ui->graphicsView->rect());
scene->addItem(customitem);
ui->graphicsView->setScene(scene);
}
MainWindow::~MainWindow()
{
delete ui;
}
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow),
scene(new QGraphicsScene),
customitem(new customparentitem)
{
ui->setupUi(this);
ui->graphicsView->setViewportUpdateMode(QGraphicsView::FullViewportUpdate);
ui->graphicsView->setRenderHint(QPainter::Antialiasing);
scene->setSceneRect(ui->graphicsView->rect());
scene->addItem(customitem);
ui->graphicsView->setScene(scene);
}
MainWindow::~MainWindow()
{
delete ui;
}
To copy to clipboard, switch view to plain text mode
This compiles just fine, but as said earlier crashes. Any ideas why?
Bookmarks