可能是由于QWidget的背景色覆盖了边框的绘制导致边框无效。解决办法是在paintEvent事件中先调用父类的绘制方法,然后再绘制边框。

以下是一个示例代码:

class MyWidget : public QWidget
{
public:
    MyWidget(QWidget *parent = nullptr) : QWidget(parent)
    {
        setFixedSize(200, 200);
        setStyleSheet("background-color: red;");
    }

protected:
    void paintEvent(QPaintEvent *event)
    {
        // 调用父类的绘制方法
        QWidget::paintEvent(event);

        // 绘制边框
        QPainter painter(this);
        painter.setPen(QPen(Qt::black, 2));
        painter.drawRect(rect());
    }
};

在这个示例中,我们先设置了QWidget的背景色为红色,然后在paintEvent事件中先调用了父类的绘制方法,然后再使用QPainter绘制了一个黑色的边框。这样就可以同时显示背景色和边框了

Qt 子类化的QWidget设置了背景色后使用paintEvent绘制边框无效

原文地址: https://www.cveoy.top/t/topic/iO9T 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录