Как изменить фон объекта QGraphicsScene?
Пытаюсь нарисовать сетку с помощью QGraphicsScene и QGraphicsView. Для этого решил создать свой класс M_QGraphicsScene, определил в нем метод drawBackground. Остановился на том, что не могу поменять background для QGraphicsScene
main.cpp
#include "nodewindoweditor.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
NodeWindowEditor w;
w.show();
return a.exec();
}
nodewindoweditor.h
#ifndef NODEWINDOW_H
#define NODEWINDOW_H
#include <QWidget>
#include <QHBoxLayout>
#include <QGraphicsView>
#include <QGraphicsScene>
#include "m_qgraphicscene.h"
class NodeWindowEditor : public QWidget
{
Q_OBJECT
public:
NodeWindowEditor(QWidget *parent = nullptr);
~NodeWindowEditor();
};
#endif // NODEWINDOW_H
m_qgraphicscene.h
#ifndef M_QGRAPHICSCENE_H
#define M_QGRAPHICSCENE_H
#include <QObject>
#include <QGraphicsScene>
#include <QPainter>
//#include <QColor>
class M_QGraphicsScene : public QGraphicsScene
{
Q_OBJECT
public:
M_QGraphicsScene(QObject * parent = nullptr);
protected:
void drawBackground(QPainter *painter, const QRectF &rect) override;
};
#endif // M_QGRAPHICSCENE_H
nodewindoweditor.cpp
#include "nodewindoweditor.h"
NodeWindowEditor::NodeWindowEditor(QWidget *parent)
: QWidget(parent)
{
this->setGeometry(300, 100, 800, 600);
this->setWindowTitle("Node Editor");
QHBoxLayout* _layout = new QHBoxLayout;
this->setLayout(_layout);
//QGraphicsScene
M_QGraphicsScene* scene = new M_QGraphicsScene(this);
//view
QGraphicsView* view = new QGraphicsView(this);
_layout->addWidget(view);
view->setScene(scene);
this->show();
}
NodeWindowEditor::~NodeWindowEditor()
{
}
m_qgraphicscene.cpp
Вопрос касается этого места(см. комментарии)
#include "m_qgraphicscene.h"
M_QGraphicsScene::M_QGraphicsScene(QObject* parent):
QGraphicsScene(parent)
{
int width = 1000;
int height = 1000;
this->setSceneRect(-width / 2, -height / 2, width, height);
// Если не определять метод drawBackground, то все работает как надо и цвет фона изменяется.
// Если определить его(drawBackground) как сейчас, то фон пропадает.
// Так как правильно установить цвет фона в этом случае?
this->setBackgroundBrush(QColor("#393939"));
}
void M_QGraphicsScene::drawBackground(QPainter *painter, const QRectF &rect)
{
painter->drawText(0, 0, "hello world");
}