qt绘制背景后出现黑线

代码如下

void Gobang::paintEvent(QPaintEvent *)
{
    //棋盘背景
    QPainter painter(this);
    painter.setBrush(QColor(255, 248, 220));
    painter.drawRect(this->rect());
    //设置背景框架
    QPainter chessboard(this);
    chessboard.setPen(QPen(Qt::black,1));
    //外棋盘
    chessboard.drawRect(10,10,680,680);
    chessboard.drawRect(35,35,630,630);
    //绘制棋盘线
    for (int i = 1; i <= 13; ++i) {
        chessboard.drawLine(35,35+45*i,665,35+45*i);
    }
    for (int i = 1; i <= 13; ++i) {
        chessboard.drawLine(35+45*i,35,35+45*i,665);
    }



}

img


如箭头所指 产生了我并未绘制的黑线

painter.drawRect(this->rect());

那两条黑线是画这一行出现的,因为你线的宽度是1,然后画在0,0的位置画一个rect,右边和下面的线就刚好出去了1个像素。
如果你想要4边都有线,你可以painter.drawRect(0, 0, rect().width()-1, rect().height()-1);
如果是不想要线,你可以在绘制之前把画笔粗细设置为0

ChatGPT尝试解答您的问题
看起来代码在绘制棋盘的时候会绘制两个黑线。这是因为在绘制棋盘的外框时,你画了两条黑色的线。

为了解决这个问题,你可以把这两条线去掉,只保留内部的棋盘线。只需要将以下两行代码删除即可:

chessboard.drawRect(10,10,680,680);
chessboard.drawRect(35,35,630,630);

另外,如果你想要在棋盘外围绘制边框,你可以使用 drawRect 函数,并将其移动到绘制棋盘线之后,例如:

chessboard.drawRect(0,0,700,700);

这样就可以在棋盘的外围绘制一个边框了。