crossplatform.ru

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

> Проблема с QGraphicsView и QGraphicsScene
NordWest
  опции профиля:
сообщение 31.3.2011, 13:40
Сообщение #1


Студент
*

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

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




Репутация:   0  


Пытаюсь написать диалог с выбором цветов для набора элементов, отображаемых в основном окне программы. Для этого создал в дизайнере диалоговое окно, в которое поместил QGraphicsView. Мне нужно, чтобы в нём отображался пример элементов основного окна с элементами выбранных цветов.

В разделе private класса окна объявил объект QGraphicsScene
QGraphicsScene *scene;


В конструкторе так:
ui->setupUi(this);
ui_grView = qFindChild<QGraphicsView *>(this, "grView");
...
scene = new QGraphicsScene;
ui_grView->setScene(scene);
ui_grView->show();
connect(scene, SIGNAL(changed(QList<QRectF>)), ui_grView, SLOT(updateScene(QList<QRectF>)));

bgCol.setRgb(Qt::black);
bgBrush.setColor(bgCol);
scene->setBackgroundBrush(bgBrush);
...


Не знаю, нужен ли тут connect или задав сцену QGraphicsView я уже задаю связь обновлений. В общем, так не работает, черный фон не появляется. Получилось только если три последних строчки вставить между созданием scene и установкой её объекту ui_grView. Но мне то нужно задать обновление отображения при смене того же цвета фона или цвета одного из других элементов.

Выше представлен последний вариант, который я пробовал. Первоначально у меня был вариант из одного примера с переопределением paintEvent:

void setupMarksColor::paintEvent(QPaintEvent *event)
{
      updateBaseImage();
}

void setupMarksColor::updateBaseImage()
{
    bgBrush.setColor(bgCol);
    scene->setBackgroundBrush(bgBrush);
    
    QList <QRectF> rList;
    rList << ui_grView->sceneRect();
    ui_grView->updateScene(rList);
}


Т.е. пытался обновлять сцену без connect'a в конструкторе. Но тоже пусто. Не очень я понимаю взаимоотношения QGraphicsView и QGraphicsScene и примеры как-то не помогают. Подскажите что исправить и почему, если не сложно.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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


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




RSS Текстовая версия Сейчас: 26.2.2020, 1:32