В разделе 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 и примеры как-то не помогают. Подскажите что исправить и почему, если не сложно.