自定义QGraphicsView正在其他小部件上绘制

时间:2016-01-06 15:43:07

标签: c++ qt events qgraphicsview qpainter

在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中绘制而不是在添加的小部件中绘制?

0 个答案:

没有答案