crossplatform.ru

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

anater
  опции профиля:
сообщение 13.10.2010, 21:08
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 21
Регистрация: 25.12.2009
Пользователь №: 1335

Спасибо сказали: 0 раз(а)




Репутация:   0  


Доброго времени суток.
Совершенно идиотская ситуация.

Определяю координаты элементов на QFrame
QLineF line(this->pb_graf->pos().x(),this->pb_graf->pos().y(),this->pb_graf->width(),this->pb_graf->height());
QRect rect(this->pb_graf->pos().x()+1,this->pb_graf->pos().y()+1,this->pb_graf->pos().x()+this->pb_graf->width()-5,this->pb_graf->height()-3);


и хочу их отрисовать.

        QPainter qppb (this);
 
 std::cout <<"X " <<this->pb_graf->geometry().x() << std::endl;
 std::cout <<"Y  " <<this->pb_graf->geometry().y() << std::endl;
 std::cout <<"W  " <<this->pb_graf->geometry().width() << std::endl;
 std::cout <<"H  " <<this->pb_graf->geometry().height() << std::endl;

    qppb.setPen(QPen(Qt::red));
qppb.drawRect(rect);    
qppb.drawLine(line);


Так прямоугольник рисуется идиально аккуратно по краям QFrame.

ЛИНИЯ!!!! по тем же координатам рисуется соответственно по диагонали но доходит примерно до середины прямоугольника. До противоположного края просто не дотягивается(!).
Уже всю голову сломал...

Помогите решить этот глюк.
Причина редактирования: пользуйтесь тагом code вместо codebox
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Алексей1153
  опции профиля:
сообщение 13.10.2010, 21:51
Сообщение #2


фрилансер
******

Группа: Участник
Сообщений: 2944
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


Цитата(anater @ 14.10.2010, 0:44) *
Мучает вопрос почему не отрисовывется по человечески на основе одних и тех же координат? есть предположения?


если твой код отформатировать по-человечьи, то становится очевидно, что координаты нифига не одни и те же :)
QLineF line(
        pb_graf->pos().x(), //0
        pb_graf->pos().y(), //0
        pb_graf->width(),  //10
        pb_graf->height()  //20
        );

QRect rect(
        pb_graf->pos().x()+1,   //0+1 ==1
        pb_graf->pos().y()+1,   //0+1 ==1 
        pb_graf->pos().x()+pb_graf->width()-5,   //0+10-5 ==5
        pb_graf->height()-3   //20-3 ==17
        );


Сообщение отредактировал Алексей1153 - 13.10.2010, 21:52
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
anater
  опции профиля:
сообщение 13.10.2010, 21:57
Сообщение #3


Студент
*

Группа: Участник
Сообщений: 21
Регистрация: 25.12.2009
Пользователь №: 1335

Спасибо сказали: 0 раз(а)




Репутация:   0  


Запустил у себя в софтине:

вывод this->pb_graf->height() = 162
rect.bottomRight().y() = 230

по ширине идентично
а вот по высоте!!!
ведь линия и прямоугольник строились на основании this->pb_graf->height()
перестаю понимать.

Просто перепробывал уже все варианты и начал кидаться в крайности... отсюда кривизна кода...

Сообщение отредактировал igor_bogomolov - 14.10.2010, 7:32
Причина редактирования: не цитируй целыми сообщениями
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 28.6.2025, 3:48