Russian Qt Forum

Qt => Общие вопросы => Тема начата: fenixrus от Июнь 03, 2016, 16:28



Название: Не срабатывает установка позиции для QGraphicsPixmapItem в QGraphicsScene
Отправлено: fenixrus от Июнь 03, 2016, 16:28
Здравствуйте, есть вектор указателей на пиксмапы, выше кодом они в цикле заполняются объектами, далее паксмапы паинтером заполняются нужными данными, с этим проблем нет, потом эти пиксмапы в цикле перебираются и добавляются через QGraphicsPixmapItem на QGraphicsScene, но почему-то они накладываются друг на друга, хотя я тут же получаю их координаты - они корректны.

Код таков:

Код:
QVector <QPixmap*> *pagePixmapList = nullptr;
QGraphicsScene *documentScene = new QGraphicsScene;
QGraphicsView *documentView = new QGraphicsView(documentScene);
documentScene->setSceneRect(0, 0, 1000, 5000);
for (int j = 0; j < 3; j++)
{
    QPixmap *newPixmapPage = new QPixmap(widthA4, heightA4);
    qDebug() <<  "j = " << j << " " << newPixmapPage;
    newPixmapPage->fill(QColor::fromRgba(qRgba(0, 0, 0, 0)));
    pagePixmapList->push_back(newPixmapPage);
}

double pOffset = 10;

for (int j = 0; j < 3; j++)
{
    qDebug() << " ";
    qDebug() << "j = " << j << " " << pagePixmapList->at(j);
    qDebug() << "pOffset " << pOffset;
    QPixmap *p = pagePixmapList->at(j);
    QGraphicsPixmapItem* pitem = new QGraphicsPixmapItem(*p);
    pitem->setPos(0,pOffset);
    qDebug() << pitem->pos();
    pOffset += p->height() + 20;
    documentScene->addItem(pitem);
}

В итоге вывод дебага таков:

Код:
j =  0   0x1952a760
pOffset  11.3386
QPointF(0,11.3386)

j =  1   0x1952a778
pOffset  1144.68
QPointF(0,1144.68)

j =  2   0x1952a790
pOffset  2278.02
QPointF(0,2278.02)

а в отрисовке вот что:

  • http://prntscr.com/bbtewd
  • http://prntscr.com/bbtf2x

хотя должно быть ровно  3 страницы, а на деле 1 и вторая накладывается, а третья почему-то такие делает отступ.