在Qt / c ++中,我有一个重载/自定义的QGraphicsView类。 在这个班级' drawBackground事件函数(paintEvent也会出现同样的问题),我使用提供的Qpainter绘制一些行:
void myGraphicsView::drawBackground(QPainter *painter, const QRectF &rect)
{
QGraphicsView::drawBackground(painter, rect);
QPen pen;
pen.setWidth(2);
painter->setPen(pen);
painter->drawLine(rect.x(),rect.y(),rect.x()+rect.width(),rect.y()+rect.height());
}
GraphicsView自定义类的初始化:
myGraphicsView::myGraphicsView(GLWidget *myOpenGLWindow,QWidget * parent) : QGraphicsView(parent)
{
setDragMode(QGraphicsView::ScrollHandDrag);
myScene=new actionEditorButtons(this);
myScene->setMainView(this);
setScene(myScene);
setStyleSheet("background: transparent");
setAlignment(Qt::AlignBottom);
}
自定义QGraphicsScene的初始化,其中一个按钮被“损坏”#34;使用自定义图形视图中绘制的线条:
actionEditorButtons::actionEditorButtons(BrainClass *theBrain,int receivedActionNb,QObject *parent) : QGraphicsScene(parent)
{
beginButton = new QPushButton();
beginButton->setIcon(QIcon(":/icons/actionBegin.png"));
beginButton->setIconSize(QSize(40,40));
beginButton->setFixedSize(QSize(40,40));
beginButton->setStyleSheet("border: none");
beginProxy=addWidget(beginButton);
beginProxy->setPos(0,80);
connect(beginButton, SIGNAL (released()),this, SLOT (handleBeginButton()));
}
我的问题是这一行不仅在这个自定义QGraphicsView上绘制,而且在所有添加此场景的小部件上也绘制了它。我怎样才能在主要的graphicsView中绘制而不是在添加的小部件中绘制?