我正在制作一个小程序,我有一堆面板。我想要它,这样当我专注于一个面板时,它会围绕它绘制一个薄的内联,以显示它是聚焦的。除了我的树视图外,我得到了所有面板。
以下是适用于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
:画家不活跃所以我的问题是我无法将QPainter
与QTreeWidget
一起使用,因此我无法绘制我的大纲。我可以使用另一种方法吗?
答案 0 :(得分:3)
根本不需要paintEvent
。仅使用样式表(setStyleSheet()
方法):
QTreeWidget:focus{ border: 1px solid red}
QTreeWidget:!focus{}
结果: