QT开发中文网

QPainter painter(this); QRect geometry = ui->tabWidget->geometry(); int x = geometry.x(); int y = geometry.y(); QPoint tabWidgetPos = ui->tabWidget->mapToGlobal(QPoint(0, 0)); x= tabWidgetPos.x(); y= ta...

您可以将绘制代码放在QWidget的paintEvent事件中,而不是resizeEvent事件中。paintEvent会在窗口重绘时调用,保证绘制位置相对稳定。以下是修改后的示例代码:

void MyWidget::paintEvent(QPaintEvent *event) {
    QPainter painter(this);
    QRect geometry = ui->tabWidget->geometry();
    int x = geometry.x();
    int y = geometry.y();

    QPoint tabWidgetPos = ui->tabWidget->mapToGlobal(QPoint(0, 0));
    x = tabWidgetPos.x();
    y = tabWidgetPos.y();

    painter.setRenderHint(QPainter::Antialiasing); // 设置抗锯齿
    int width = ui->tabWidget->width();
    int height = ui->tabWidget->height();
    int cornerRadius = 10;
    QColor color(235, 235, 235);
    painter.setBrush(color); // 设置填充颜色
    painter.drawRoundedRect(x - 15, y - 20, width + 20, height + 20, cornerRadius, cornerRadius);
    
    qDebug() << "x=" << x << "y=" << y << "width=" << width << "height=" << height << endl;

}

通过将绘制代码放在paintEvent中,确保每次窗口重绘都会重新绘制矩形,并且位置相对稳定。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:http://qt.0voice.com/?id=11238

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?