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
  опции профиля:
сообщение 24.3.2011, 13:48
Сообщение #2


Участник
**

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

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




Репутация:   4  


IT Окна. Конструктор
?
установил, не запускается - "напишите микрософту"

изначально под "резиновым квадратом" я понимал квадрат, который может стать параллелепипедом... эта функция нужна? Или ты просто хочешь изменять размеры граней прямоугольника, не кособоча его? окна ведь могут быть кособокими, я б такое хотел)
тебе нужна не тонкая линия рамы, а толстая? Чем толще линия, тем нелепее будут выглядеть скособоченные углы... тут нужно ещё с ними мучиться... арка тоже интересненько.. полуэллипс...
короче, надо как-то сцеплять грани, задача ясна)
про полигон всё равно идея не дошла... зачем там 8 точек... вроде ведь нужно 4
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
lifrost
  опции профиля:
сообщение 24.3.2011, 14:00
Сообщение #3


Студент
*

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

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




Репутация:   0  


Цитата(abc @ 24.3.2011, 15:48) *
IT Окна. Конструктор
?
установил, не запускается - "напишите микрософту"

изначально под "резиновым квадратом" я понимал квадрат, который может стать параллелепипедом... эта функция нужна? Или ты просто хочешь изменять размеры граней прямоугольника, не кособоча его? окна ведь могут быть кособокими, я б такое хотел)
тебе нужна не тонкая линия рамы, а толстая? Чем толще линия, тем нелепее будут выглядеть скособоченные углы... тут нужно ещё с ними мучиться... арка тоже интересненько.. полуэллипс...
короче, надо как-то сцеплять грани, задача ясна)
про полигон всё равно идея не дошла... зачем там 8 точек... вроде ведь нужно 4


IT Окна. Конструктор - да эта прога.....странно я качал встала норм, сижу на XP.
Ты все очень четко понял, и ты прав - нужно его "кособочить". Линия рамы должна выглядеть как квадрат - внутри белый и граница, каждую грань можно было выделять, так же выделяться и центр - ну стекло само.

А с чего я полез в полигоны, кое кто посоветовал попробовать, сказали мол полигонами все что угодно можно нарисовать в том числе и арку (много точек нужно как я понял). А почему 8-мь точек. Смотри, вид каждой грани:

|\
| |
| |
| |
|/

Соотвественно, если каждый такой полигон - отдельный класс, то всего у них 8-мь точек.

class WindowItem : public QObject, public QGraphicsPolygonItem
{
    Q_OBJECT

public:
    WindowItem(QGraphicsItem *parent=0);
    void setupPoint();

protected:
    // полигоны
    QPolygonF lPoly; // левая свт
    QPolygonF rPoly; // правая свт
    QPolygonF tPoly; // верхняя свт
    QPolygonF bPoly; // нижняя свт
    QPolygonF packP; // стеклопакет

    // вершины
    QPointF point1;
    QPointF point2;
    QPointF point3;
    QPointF point4;
    QPointF point5;
    QPointF point6;
    QPointF point7;
    QPointF point8;
};

// класс левой створки
class leftGlume : public WindowItem
{
    Q_OBJECT

public:
    leftGlume(QGraphicsItem *parent=0);
    void setupLG();

private:
    QPointF oldLeft;

    void mousePressEvent(QGraphicsSceneMouseEvent *e);
    void mouseMoveEvent(QGraphicsSceneMouseEvent *e);
    void mouseReleaseEvent(QGraphicsSceneMouseEvent *e);
};

......


Но в этом пути я немонимаю как дорисовывать полигон при перемещение...... Это ещё ладно + нужно всякие перегородки во внутрь вставлять и створки (то что открывается). Я с графикой вообще не работал, тяжелова-то , да и задача не из простых....
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме
- 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


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


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




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