Создал себе тестовый примерчик для своих жалких потуг..
Сладер да Вьюха для сцены.
при изменении значения слайдера вот что делаю :
Попробуй вместо geometry() использоваться rect(). У меня проблем при таком обращении не возникает.
Никакой подсказки никто дать не может?просто замучался уже с этими координатами..вот ещё подробнее :
Есть некоторое не понимание взаимосвязи систем координат item,model,view.
Вот такой вот код:
void Model::setUpGraphicScene(QStandardItemModel *model,int size)
{
static QFont font("Times",9);
static int x = - this->vrptr->geometry().width()/2;//this->vrptr -указатель на QGraphicView
int y= - (this->vrptr->geometry().height()/2);
QGraphicsItem * item;
static QFontMetrics fn (font);
static int yGrow = fn.height() -3;
this->visualResultModel->clear();
item= visualResultModel->addText(model->horizontalHeaderItem(0)->text(),font);
item->setPos(x,y);
for(int i=1;i<size;++i)
{
item= visualResultModel->addText(model->horizontalHeaderItem(i)->text(),font);
item->setPos(x,y+yGrow);
y=item->pos().y();
}
}
void Model::setUpGraphicScene(QStandardItemModel *model,int size)
{
qDebug() << this->vrptr->rect();
qDebug() << this->visualResultModel->width() << this->visualResultModel->height();
static QFont font("Times",9);
int x = -this->vrptr->geometry().width();
// x+=113;
int y= - (this->vrptr->geometry().height()/2);
QGraphicsItem * item;
static QFontMetrics fn (font);
static int yGrow = fn.height() -3;
this->visualResultModel->clear();
item= visualResultModel->addText(model->horizontalHeaderItem(0)->text(),font);
item->setPos(x,y);
for(int i=1;i<size;++i)
{
item= visualResultModel->addText(model->horizontalHeaderItem(i)->text(),font);
item->setPos(x,y+yGrow);
y=item->pos().y();
}
qDebug() << this->vrptr->rect();
qDebug() << this->visualResultModel->width() << this->visualResultModel->height();
}
Используй QGraphicsView::setAlignment(Qt::AlignLeft | Qt::AlignTop) и все путем будет.
Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)