crossplatform.ru

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

 
Ответить в данную темуНачать новую тему
jerdeks
  опции профиля:
сообщение 23.9.2011, 9:32
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 6
Регистрация: 14.9.2011
Пользователь №: 2874

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




Репутация:   0  


Какой-то бред. QStateMachineScene наследуется от сцены. На ней сетка из точек (QStateMachineGridPoint). Надо выделить несколько. Вот такой примерно код:
void QStateMachineScene::func() {

    QPainterPath nearest_points_rect;
    nearest_points_rect.addRect(0, 0, 200, 100);

    setSelectionArea(nearest_points_rect, QTransform(curItem->matrix()));
    QList<QGraphicsItem *> nearest_points = selectedItems();

    qWarning(QString("%1").arg(nearest_points.count()).toAscii()); // Всегда печатает или 5, или 0.

    // Выделенные точки должны покраситься в зеленый. Красится столбик из пяти точек слева сверху.
    foreach (QGraphicsItem *item, nearest_points)
        if (dynamic_cast<QStateMachineGridPoint *>(item))
            ((QStateMachineGridPoint*)item)->setBrush(Qt::green);

    clearSelection();
}


Цитата(jerdeks @ 23.9.2011, 10:26) *
Какой-то бред. QStateMachineScene наследуется от сцены. На ней сетка из точек (QStateMachineGridPoint). Надо выделить несколько. Вот такой примерно код:
void QStateMachineScene::func() {

    QPainterPath nearest_points_rect;
    nearest_points_rect.addRect(0, 0, 200, 100);

    setSelectionArea(nearest_points_rect);
    QList<QGraphicsItem *> nearest_points = selectedItems();

    qWarning(QString("%1").arg(nearest_points.count()).toAscii()); // Всегда печатает или 5, или 0.

    // Выделенные точки должны покраситься в зеленый. Красится столбик из пяти точек слева сверху.
    foreach (QGraphicsItem *item, nearest_points)
        if (dynamic_cast<QStateMachineGridPoint *>(item))
            ((QStateMachineGridPoint*)item)->setBrush(Qt::green);

    clearSelection();
}



[quote name='jerdeks' date='23.9.2011, 10:27' post='53201']
Какой-то бред. QStateMachineScene наследуется от сцены. На ней сетка из точек (QStateMachineGridPoint). Надо выделить несколько. Вот такой примерно код:
void QStateMachineScene::func() {

    QPainterPath nearest_points_rect;
    nearest_points_rect.addRect(0, 0, 200, 100);

    setSelectionArea(nearest_points_rect);
    QList<QGraphicsItem *> nearest_points = selectedItems();

    qWarning(QString("%1").arg(nearest_points.count()).toAscii()); // Всегда печатает или 5, или 0.

    // Выделенные точки должны покраситься в зеленый. Красится столбик из пяти точек слева сверху.
    foreach (QGraphicsItem *item, nearest_points)
        if (dynamic_cast<QStateMachineGridPoint *>(item))
            ((QStateMachineGridPoint*)item)->setBrush(Qt::green);

    clearSelection();
}


Блять, где кнопка "редактировать"?

В общем в строке
setSelectionArea(nearest_points_rect, QTransform(curItem->matrix()));
нет второго аргумента, просто по-всякому пробовал
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 23.9.2011, 9:47
Сообщение #2


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

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

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




Репутация:   34  


jerdeks, на этом сайте тем, кто матерится, такую кнопку не выдают :D
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
jerdeks
  опции профиля:
сообщение 23.9.2011, 10:18
Сообщение #3


Новичок


Группа: Новичок
Сообщений: 6
Регистрация: 14.9.2011
Пользователь №: 2874

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




Репутация:   0  


Рекурсия же :) Я матерюсь, потому что кнопки нет.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 23.9.2011, 10:22
Сообщение #4


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

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

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




Репутация:   34  


jerdeks, я этими классами не пользовался, но вот насчёт foreach - он вроде не меняет контейнер. Он работает с копией контейнера (но я это не проверял! , видел в доках где-то). Возможно, в этом дело - попробуй обычным итератором пробежаться
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
jerdeks
  опции профиля:
сообщение 23.9.2011, 10:30
Сообщение #5


Новичок


Группа: Новичок
Сообщений: 6
Регистрация: 14.9.2011
Пользователь №: 2874

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




Репутация:   0  


Не, это не то. point же это указатель. Я часто foreach использую

foreach элемент из контейнера копирует в первый аргумент, а там указатель

блин. не point, а item
без редактирования грустно :(
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 23.9.2011, 10:31
Сообщение #6


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

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

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




Репутация:   34  


а, точно. Ну, тогда да, не в этом дело
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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


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