代码如下
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);
}
}
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);
这样就可以在棋盘的外围绘制一个边框了。