使用QPainter绘制QTreeWidget

时间:2014-11-16 11:15:26

标签: c++ qt qpainter qtreewidget

我正在制作一个小程序,我有一堆面板。我想要它,这样当我专注于一个面板时,它会围绕它绘制一个薄的内联,以显示它是聚焦的。除了我的树视图外,我得到了所有面板。

以下是适用于QWidget的示例:

void Test::paintEvent(QPaintEvent *event)
{
    if(hasFocus())
    {
        QPainter painter(this);

        QPen pen(Qt::blue);
        pen.setWidth(1);
        painter.setPen(pen);

        painter.drawRect(geometry());

    }

    QWidget::paintEvent(event);
}

当我在QPainter上使用QTreeWidget时,我在控制台中收到了这些调试消息:

  • QWidget::paintEngine:不应再被称为
  • QPainter::begin:画图设备返回引擎== 0,键入:1
  • QPainter::setPen:画家不活跃
  • QPainter::drawRects:画家不活跃

所以我的问题是我无法将QPainterQTreeWidget一起使用,因此我无法绘制我的大纲。我可以使用另一种方法吗?

1 个答案:

答案 0 :(得分:3)

根本不需要paintEvent。仅使用样式表(setStyleSheet()方法):

QTreeWidget:focus{ border: 1px solid red}
QTreeWidget:!focus{}

结果:

enter image description here