c++ - 使用 QPainter 在 QTreeWidget 上绘图

标签 c++ qt qpainter qtreewidget

我正在开发一个小程序,里面有很多面板。我想要它,以便当我聚焦到一个面板时,它会在它周围绘制一条细线以表明它已聚焦。除了我的 TreeView 之外,我的所有面板都可以使用它。

这是一个使用 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);
}

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

  • QWidget::paintEngine:不应再调用
  • QPainter::begin:Paint 设备返回引擎 == 0,类型:1
  • QPainter::setPen:Painter 未激活
  • QPainter::drawRects:Painter 未激活

所以我的问题是我不能将QPainterQTreeWidget 一起使用,所以我无法绘制轮廓。我可以使用其他方法吗?

最佳答案

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

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

结果:

enter image description here

关于c++ - 使用 QPainter 在 QTreeWidget 上绘图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26956316/

相关文章:

c++ - 在不创建新 int[size] 的情况下声明数组时出现 SIGSEGV 错误

c++ - 非类型模板参数的链接器错误

python - PyQt 代码拆分——设计与功能

python - PyQT中事件的识别源

python - QPainters 同步背后的机制

c++ - 用于 GLSL 图像处理的小型 C/C++ 库?

c++ - 除非复制到新字符串,否则比较从 Lua 中的 C 函数推送的字符串失败

c++ - 我的类(class)如何继承接口(interface)和 QObject ?

python - 如何在QT中创建带有文本和颜色的简单图像(QImage)并将其另存为文件

Qt绘画不清除背景