在此代码中,更改了QGraphicsView
背景。现在当我检查 true 时我需要更改背景checkBox
.当我设置为checkBox
去检查true
我需要像这段代码一样设置背景。当我设置时checkBox
去检查false
。我需要设置QGraphicsView
对于正常的默认方式。我怎样才能做到这一点。
这是我的代码:
主窗口.cpp
#include "mainwindow.h"
#include <QGraphicsTextItem>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent)
{
scene = new Scene(this);
scene->setSceneRect(10,10,260,200);
view = new QGraphicsView(scene);
setCentralWidget(view);
}
主窗口.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QGraphicsView>
#include "scene.h"
#include "customrectitem.h"
class MainWindow : public QMainWindow
{
public:
explicit MainWindow(QWidget *parent = 0);
private:
QGraphicsView* view;
QGraphicsScene* scene;
};
#endif // MAINWINDOW_H
Scene.h
#ifndef SCENE_H
#define SCENE_H
#include <QGraphicsScene>
#include <QPainter>
#include <QApplication>
class Scene : public QGraphicsScene
{
Q_OBJECT
public:
explicit Scene(QObject *parent = 0);
int getGridSize() const {return this->gridSize;}
protected:
void drawBackground (QPainter* painter, const QRectF &rect);
private:
int gridSize;
};
#endif // SCENE_H
场景.cpp
#include "scene.h"
Scene::Scene(QObject *parent) : QGraphicsScene(parent), gridSize(20)
{
Q_ASSERT(gridSize > 0);
}
void Scene::drawBackground(QPainter *painter, const QRectF &rect)
{
QColor c (10,140,255,155);
painter->setPen(c);
qreal left = int(rect.left()) - (int(rect.left()) % gridSize);
qreal top = int(rect.top()) - (int(rect.top()) % gridSize);
QVarLengthArray<QLineF,100> lines;
for (qreal x = left; x < rect.right(); x += gridSize)
lines.append(QLineF(x,rect.top(),x,rect.bottom()));
for (qreal y = top; y < rect.bottom(); y += gridSize)
lines.append(QLineF(rect.left(),y,rect.right(),y));
painter->drawLines(lines.data(),lines.size());
}