crossplatform.ru

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

4 страниц V  < 1 2 3 4 >  
Ответить в данную темуНачать новую тему
> QGraphicsRectItem и setPos()
lifrost
  опции профиля:
сообщение 24.3.2011, 14:00
Сообщение #11


Студент
*

Группа: Участник
Сообщений: 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);
};

......


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


Участник
**

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

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




Репутация:   4  


а, да, полигон для грани это выглядит хорошо, надо думать, пробовать...
либо 5 итемов склеивать... как их перерисовывать только...
либо в одном итеме рисовать в методе paint полигоны... тогда вся конструкция как бы будет монолитом... но нужно будет проверять, какой полигон под мышкой... а как его отдельно окрашивать...
а окно может быть не параллелепипедом?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
lifrost
  опции профиля:
сообщение 24.3.2011, 14:27
Сообщение #13


Студент
*

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

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




Репутация:   0  


Цитата(abc @ 24.3.2011, 16:21) *
а, да, полигон для грани это выглядит хорошо, надо думать, пробовать...
либо 5 итемов склеивать... как их перерисовывать только...
либо в одном итеме рисовать в методе paint полигоны... тогда вся конструкция как бы будет монолитом... но нужно будет проверять, какой полигон под мышкой... а как его отдельно окрашивать...
а окно может быть не параллелепипедом?

У меня один в один размышления.....но чет у меня ума не хватает ни пять итемов склеить, ни монолит двигать по отдельности - пробовал и так и так - безрезультатно ((((.

Окно может быть не параллелепипедом - элементарно круглое. Но на данном этапе это не нужно. основная задача параллелепипеды и арка.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
abc
  опции профиля:
сообщение 24.3.2011, 15:09
Сообщение #14


Участник
**

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

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




Репутация:   4  


пока не знаю, что сказать, нужно пробовать,
завтра, может быть, или на выходных,
интересная у тебя работа :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
lifrost
  опции профиля:
сообщение 25.3.2011, 9:51
Сообщение #15


Студент
*

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

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




Репутация:   0  


Цитата(abc @ 24.3.2011, 17:09) *
пока не знаю, что сказать, нужно пробовать,
завтра, может быть, или на выходных,
интересная у тебя работа :)

Да уж :) - интересная )))
Ладно, если мысли появятся, черкни пожалуйста код.
Я пока буду экспериментировать.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
lifrost
  опции профиля:
сообщение 25.3.2011, 10:47
Сообщение #16


Студент
*

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

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




Репутация:   0  


Я тут подумал....а QGraphicsItemGroup может как-нибудь помочь или это из другой песни?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
abc
  опции профиля:
сообщение 25.3.2011, 13:35
Сообщение #17


Участник
**

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

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




Репутация:   4  


насколько я понимаю, раз это сделает итемы единым целым, нам это не подходит,
нужно ведь, чтобы каждая итема реагировала на мышь отдельно.
в общем, сейчас пытаюсь реализовать на основе полигонов...
при каждом MoveEvent придётся итему устанавливать новый полигон, с докорректированными точками...
пока не знаю, что из этого выйдет... но звучит не очень приятно)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
lifrost
  опции профиля:
сообщение 25.3.2011, 13:41
Сообщение #18


Студент
*

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

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




Репутация:   0  


Цитата(abc @ 25.3.2011, 15:35) *
насколько я понимаю, раз это сделает итемы единым целым, нам это не подходит,
нужно ведь, чтобы каждая итема реагировала на мышь отдельно.
в общем, сейчас пытаюсь реализовать на основе полигонов...
при каждом MoveEvent придётся итему устанавливать новый полигон, с докорректированными точками...
пока не знаю, что из этого выйдет... но звучит не очень приятно)

Ок, Группы отметаем.

Я щас сделал дорисовку, но криво до ужаса, почти тоже что ты и сказал, но даже хуже ))), с глобальными переменными, типа того (для правой и верхней створки):

Раскрывающийся текст
#include "windowitem.h"

QPointF point1;
QPointF point2;
QPointF point3;
QPointF point4;
QPointF point5;
QPointF point6;
QPointF point7;
QPointF point8;

.......
void RightGlume::mouseMoveEvent(QGraphicsSceneMouseEvent *e)
{
    setPos(e->scenePos().x()-oldRight.x(), pos().y());

    QRectF rect = sceneBoundingRect();

  // Обновляю точки

    point1 = QPointF(rect.x()+20, point1.y());
    point4 = QPointF(rect.x(), point4.y());

    update();
}

......

// Теперь если передвинуть правую створку, а потом нажать на верхнюю

........

void TopGlume::mousePressEvent(QGraphicsSceneMouseEvent *e) // перерисовываем верхний полигон
{
    oldTop = e->pos();

    tPoly.clear();
    tPoly << point8;
    tPoly << point1;
    tPoly << point4;
    tPoly << point7;
    setPolygon(tPoly);

    setFlag(QGraphicsItem::ItemIsSelectable, true);
    setBrush(QBrush(Qt::black,Qt::BDiagPattern));
}
........


До ужаса криво ))
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
abc
  опции профиля:
сообщение 25.3.2011, 13:47
Сообщение #19


Участник
**

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

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




Репутация:   4  


верю на слово ))
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
lifrost
  опции профиля:
сообщение 25.3.2011, 15:26
Сообщение #20


Студент
*

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

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




Репутация:   0  


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

4 страниц V  < 1 2 3 4 >
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


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




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