crossplatform.ru

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

> QGraphicsRectItem и setPos()
lifrost
  опции профиля:
сообщение 10.3.2011, 11:48
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 38
Регистрация: 4.3.2011
Из: Миасс
Пользователь №: 2468

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




Репутация:   0  


Создаю в конструкторе:

pRight = new QGraphicsRectItem;
pRight->setRect(580, 300, 20, 300);
pRight->setPen(QPen(Qt::black));
pRight->setBrush(QBrush(Qt::green));
addItem(pRight);


Хочу поменять положение своего rect, делаю следующее

void WindowScene::mousePressEvent(QGraphicsSceneMouseEvent *e)
{
    if(e->button() == Qt::LeftButton)
    {
        plastPos = pRight->scenePos();

        leftButton = true;
        mX = e->buttonDownScenePos(Qt::LeftButton).x();
    }
}

void WindowScene::mouseMoveEvent(QGraphicsSceneMouseEvent *e)
{
    int x, y;
    x = e->scenePos().x();
    y = e->scenePos().y();

    if(leftButton)
    {
        dx = x - mX;
        dy = plastPos.y();

        pRight->setPos(dx, dy);

        sceneUpdate();
    }
}

void WindowScene::mouseReleaseEvent(QGraphicsSceneMouseEvent *e)
{
    e->accept();
    leftButton = false;
}


Квадрат перемещается, НО! Я не понимаю, почему при повторном перемещение он "соскакивает" в первоначальную позицию?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
abc
  опции профиля:
сообщение 31.3.2011, 9:57
Сообщение #2


Участник
**

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

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




Репутация:   4  


я проснулся ночью в поту! я полдня мучился, не знал, как обойтись без глобальных переменных, а ведь это же очевидно - двигать итемы в классе сцены... она будет знать обо всех точках итемов, и всех их перерисовывать... итемам ничего не нужно будет знать друг о друге... я помню, как я в начале нашей работы отвёл тебя от идеи ловить мышь в классе сцены... я, однако, тогда не знал, что квадрат будет составлен из нескольких полигонов, а потом я совершенно не подумал вернуться к твоему изначальному плану.
короче, твой вариант с дорисовыванием по кликам можно доработать... но скашивание всё равно вызовет проблемы, о которых я уже писал
по вопросам:
1) а как ты одну добавляешь? это ведь QGraphicsRectItem?
2) ты не понял, как совместно перерисовывать полигоны? или как это сделать без глобальных переменных?

если грани имеют стандартную ширину, это облегчает дело, но я ещё хочу обратить твоё внимание, что размеры нашего окна должны быть пропорциональны размерам реального окна
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
lifrost
  опции профиля:
сообщение 31.3.2011, 10:20
Сообщение #3


Студент
*

Группа: Участник
Сообщений: 38
Регистрация: 4.3.2011
Из: Миасс
Пользователь №: 2468

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




Репутация:   0  


Цитата(abc @ 31.3.2011, 11:57) *
я проснулся ночью в поту! я полдня мучился, не знал, как обойтись без глобальных переменных, а ведь это же очевидно - двигать итемы в классе сцены... она будет знать обо всех точках итемов, и всех их перерисовывать... итемам ничего не нужно будет знать друг о друге... я помню, как я в начале нашей работы отвёл тебя от идеи ловить мышь в классе сцены... я, однако, тогда не знал, что квадрат будет составлен из нескольких полигонов, а потом я совершенно не подумал вернуться к твоему изначальному плану.
короче, твой вариант с дорисовыванием по кликам можно доработать... но скашивание всё равно вызовет проблемы, о которых я уже писал
по вопросам:
1) а как ты одну добавляешь? это ведь QGraphicsRectItem?
2) ты не понял, как совместно перерисовывать полигоны? или как это сделать без глобальных переменных?

если грани имеют стандартную ширину, это облегчает дело, но я ещё хочу обратить твоё внимание, что размеры нашего окна должны быть пропорциональны размерам реального окна


Так =). Все-таки нужно наследоваться от сцены, добавить нужно кол-во полигонов и двигать их? На счет скосов, пока можно обойтись без этого.
В итоге: получается забить на все предыдущие варианты?

1) уже понял.
2) да я не понял как совместно перерисовать итемы без кликов.

Хотя эти два вопроса можно выкинуть раз все таки наследоваться от сцены )) Там кстати и текст с размерами будет проще вставить...ах да вот на счет масштабирование реальный размер и нарисованный - вот тут реально сложновато все про масштабировать...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме
- lifrost   QGraphicsRectItem и setPos()   10.3.2011, 11:48
- - abc   держи код, который работает, но это в классе итема...   12.3.2011, 21:34
- - lifrost   спасибо, значит я просто пошел не той дорогой. у м...   14.3.2011, 7:51
- - lifrost   Я сделал, действительно итем двигается без проблем...   14.3.2011, 14:07
- - abc   Вот код, двигающий левую и верхнюю грани... Надеюс...   15.3.2011, 13:31
|- - lifrost   Цитата(abc @ 15.3.2011, 15:31) Вот код, д...   15.3.2011, 14:51
- - lifrost   Что-то после нескольких дней экспериментов я понял...   24.3.2011, 10:26
- - abc   что-то я не понял, какой результат нужно получить,...   24.3.2011, 12:31
|- - lifrost   Цитата(abc @ 24.3.2011, 14:31) что-то я н...   24.3.2011, 12:45
- - abc   IT Окна. Конструктор ? установил, не запускается -...   24.3.2011, 13:48
|- - lifrost   Цитата(abc @ 24.3.2011, 15:48) IT Окна. К...   24.3.2011, 14:00
- - abc   а, да, полигон для грани это выглядит хорошо, надо...   24.3.2011, 14:21
|- - lifrost   Цитата(abc @ 24.3.2011, 16:21) а, да, пол...   24.3.2011, 14:27
- - abc   пока не знаю, что сказать, нужно пробовать, завтр...   24.3.2011, 15:09
|- - lifrost   Цитата(abc @ 24.3.2011, 17:09) пока не зн...   25.3.2011, 9:51
- - lifrost   Я тут подумал....а QGraphicsItemGroup может как-ни...   25.3.2011, 10:47
- - abc   насколько я понимаю, раз это сделает итемы единым ...   25.3.2011, 13:35
|- - lifrost   Цитата(abc @ 25.3.2011, 15:35) насколько ...   25.3.2011, 13:41
- - abc   верю на слово ))   25.3.2011, 13:47
- - lifrost   Я тут ещё подумал, по мимо всего нужно ещё и разме...   25.3.2011, 15:26
- - abc   да, сетку неплохо бы ненавязчивую. чтоб такую прог...   25.3.2011, 16:18
- - Litkevich Yuriy   Цитата(abc @ 25.3.2011, 18:18) заархивиро...   26.3.2011, 7:38
- - abc   спасибо, Юра) квадрат адекватен, только если разд...   26.3.2011, 12:05
|- - lifrost   Цитата(abc @ 26.3.2011, 14:05) спасибо, Ю...   28.3.2011, 7:24
- - abc   я пытался добиться, чтобы, при раздвигании, грани ...   28.3.2011, 9:55
|- - lifrost   Цитата(abc @ 28.3.2011, 11:55) я пытался ...   28.3.2011, 10:31
- - abc   ИТ окна почти запустились - оказалось, что нужно б...   29.3.2011, 9:51
|- - lifrost   Цитата(abc @ 29.3.2011, 11:51) ИТ окна по...   29.3.2011, 10:34
- - abc   супер окна тоже не запускаются ставил бесплатную ...   29.3.2011, 20:19
|- - lifrost   Цитата(abc @ 29.3.2011, 22:19) супер окна...   30.3.2011, 9:28
- - lifrost   Кстати, есть ещё идея со сигналами/слотами...Это я...   30.3.2011, 9:59
- - abc   в реализации new Arс ты столкнулся с той же пробле...   30.3.2011, 11:49
|- - lifrost   Цитата(abc @ 30.3.2011, 13:49) в реализац...   31.3.2011, 7:09
- - abc   я проснулся ночью в поту! я полдня мучился, не...   31.3.2011, 9:57
|- - lifrost   Цитата(abc @ 31.3.2011, 11:57) я проснулс...   31.3.2011, 10:20
- - abc   2) задаёшь новые координаты вершин, затем устанавл...   31.3.2011, 11:43
|- - lifrost   Цитата(abc @ 31.3.2011, 13:43) 2) задаёшь...   1.4.2011, 7:33
- - abc   пусть двигается, но изначально строй окно по задан...   1.4.2011, 11:52
- - lifrost   Цитата(abc @ 1.4.2011, 13:52) пусть двига...   1.4.2011, 12:01


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


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




RSS Текстовая версия Сейчас: 26.11.2024, 4:57