crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в Соотношение координат QGraphics(View/Scene/Item)
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
wiz29 Дата 7.7.2010, 12:33
  Используй QGraphicsView::setAlignment(Qt::AlignLeft | Qt::AlignTop) и все путем будет.
Andrewshkovskii Дата 15.10.2009, 0:01
 
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();
}

Цитата
QRect(0,0 607x277) //rect вьюхи до отображения текста
0 0//ширина и высота модели до отображения
QRect(0,0 607x277) //после
716 258//после..


почему такое происходит?Просто сейчас, у меня рисуется в принципе нормально, но появляется скролл на вьюхе..
Andrewshkovskii Дата 14.10.2009, 22:17
  Никакой подсказки никто дать не может?просто замучался уже с этими координатами..вот ещё подробнее :
Есть некоторое не понимание взаимосвязи систем координат 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();
    }
}

Вроде как должен начать добавлять item в левый верхний угол, но почему-то , происходит вот так :

Что я делаю не так? (на рисунке , вьюха - это где порог близости..)
Andrewshkovskii Дата 14.10.2009, 0:01
 
Цитата(Elfinit @ 13.10.2009, 21:58) *
Попробуй вместо geometry() использоваться rect(). У меня проблем при таком обращении не возникает.

Да оно тоже самое возвращает (в плане width,height)
Elfinit Дата 13.10.2009, 20:58
  Попробуй вместо geometry() использоваться rect(). У меня проблем при таком обращении не возникает.
Andrewshkovskii Дата 13.10.2009, 18:26
  Создал себе тестовый примерчик для своих жалких потуг..
Сладер да Вьюха для сцены.
при изменении значения слайдера вот что делаю :
Раскрывающийся текст
void MainWindow::out(int i)
{
qDebug() << i;
QGraphicsLineItem * item = this->scene->addLine(0,0,0,10,*(new QPen()));
item->setPos(-((ui->graphicsView->geometry().width()/2)-5),-((ui->graphicsView->geometry().height()/2)-20));
qDebug() << ui->graphicsView->geometry();
qDebug() << item->pos();
}


Пробовал читать про http://doc.crossplatform.ru/qt/4.5.0/graphicsview.html - не понял, всеравно. Видимо мозгов не хватаит..:)
Так в чем проблема : 1. Координаты, при которых создается айтем - это что за координаты?к чему они относятся?Я так понимаю к Сцене(айтем на ней создается в координатах , где центр в 0.0), которая отображается во вью, где координаты 0,0 в левом верхнем углу..так?
Так вот, почему при изменении позиции айтема таким образом , первый раз он отображается как задумывалось,а при следующим - вне видимой части вьюхи..?
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 29.3.2024, 9:32