Here the source codes :
setting scene with view :
{
qDebug () << this->visualClustersView->rect();
qDebug () << this->visualClustersView->sceneRect();
this->visualClustersView->setScene(model);
this->visualClustersView->setSceneRect(this->visualClustersView->rect);
qDebug () << this->visualClustersView->rect();
qDebug () << this->visualClustersView->sceneRect();
}
void View::setVisualModel(QGraphicsScene * model)
{
qDebug () << this->visualClustersView->rect();
qDebug () << this->visualClustersView->sceneRect();
this->visualClustersView->setScene(model);
this->visualClustersView->setSceneRect(this->visualClustersView->rect);
qDebug () << this->visualClustersView->rect();
qDebug () << this->visualClustersView->sceneRect();
}
To copy to clipboard, switch view to plain text mode
output :
QRect(0,0 640x480)
QRectF(0,0 0x0)
QRect(0,0 640x480)
QRectF(0,0 640x480)
but real view size is not 640x480.
Source code , what setting the items on scene :
{
graphicsItems.clear();
this->visualResultModel->clear();
static QFont font
("Times",
9);
static int x = 0;
int y= 0;
static int yGrow = fn.height() -2;
static int maxSize =0;
this->graphicsItems.push_back(this->visualResultModel->addText(model->horizontalHeaderItem(0)->text(),font));
graphicsItems[0]->setPos(x,y);
maxSize = fn.width(graphicsItems.at(0)->toPlainText());
for(int i=1;i<model->rowCount();++i)
{
graphicsItems.push_back(visualResultModel->addText(model->horizontalHeaderItem(i)->text(),font));
graphicsItems[i]->setPos(x,y+yGrow);
y=graphicsItems.at(i)->pos().y();
if (maxSize < fn.width(graphicsItems.at(i)->toPlainText()))
maxSize = fn.width(graphicsItems.at(i)->toPlainText());
}
emit this->visualModelCalculated(maxSize);
}
void Model::calculateNewVisualResult(QStandardItemModel *model)
{
graphicsItems.clear();
this->visualResultModel->clear();
static QFont font("Times",9);
static QFontMetrics fn (font);
static int x = 0;
int y= 0;
static int yGrow = fn.height() -2;
static int maxSize =0;
this->graphicsItems.push_back(this->visualResultModel->addText(model->horizontalHeaderItem(0)->text(),font));
graphicsItems[0]->setPos(x,y);
maxSize = fn.width(graphicsItems.at(0)->toPlainText());
for(int i=1;i<model->rowCount();++i)
{
graphicsItems.push_back(visualResultModel->addText(model->horizontalHeaderItem(i)->text(),font));
graphicsItems[i]->setPos(x,y+yGrow);
y=graphicsItems.at(i)->pos().y();
if (maxSize < fn.width(graphicsItems.at(i)->toPlainText()))
maxSize = fn.width(graphicsItems.at(i)->toPlainText());
}
emit this->visualModelCalculated(maxSize);
}
To copy to clipboard, switch view to plain text mode
Becouse of fixed view size, my interface resizing to view size,and this looks ugly.
Where is my problem?
Bookmarks