QT开发中文网

cpp void LeftTreeWidget::paintEvent(QPaintEvent *event) { QPainter painter(viewport()); painter.setRenderHint(QPainter::Antialiasing); // 定义指定的矩形大小 QRect rect(30, 78, 260, 40); // 替换为所需的尺寸和位置 // 绘制背景图 QString imagePath = ...

要在 QTreeWidgetpaintEvent 中按原图片大小贴图而不进行缩放,你需要直接使用 drawPixmap 方法,传递图片的原始尺寸,而不是通过 scaled() 函数来调整其大小。以下是如何实现这一点:

修改后的代码示例

#include <QPainter>
#include <QPixmap>
#include <QTreeWidget>

void LeftTreeWidget::paintEvent(QPaintEvent *event) {
    // 调用基类的 paintEvent 以保留树形控件的正常绘制
    QTreeWidget::paintEvent(event);

    // 创建一个 QPainter 对象,并在 viewport 上进行绘制
    QPainter painter(viewport());
    painter.setRenderHint(QPainter::Antialiasing);

    // 定义指定的位置,确保该位置不会与树形控件项重叠
    QRect rect(30, 78, 260, 40); // 可以根据需要调整这个矩形的位置和尺寸

    // 加载背景图像
    QString imagePath = ":/png/liebiaotoubeijing.png"; // 图片路径
    QPixmap pixmap(imagePath);

    if (!pixmap.isNull()) {
        // 在指定位置按原始大小绘制图片
        painter.drawPixmap(rect.topLeft(), pixmap);
        // 如果你想让图片从某个点开始绘制(例如上方或左侧),可以考虑调整 rect.topLeft()
        // painter.drawPixmap(QPoint(30, 78), pixmap); 也可以这样写 
    } else {
        qDebug() << "Failed to load image:" << imagePath;
    }
}

解释

  1. 调用基类的 paintEvent: 首先调用 QTreeWidget::paintEvent(event) 确保树形控件正常显示。如果不调用,树形控件将不会正确地显示它的内容。

  2. 创建 QPainter: 创建一个画家对象,用于在控件上进行绘制。

  3. 定义绘制区域: 使用 QRect 来定义您希望绘制图像的位置。此处可能会依赖于你的布局和其他 UI 元素,因此请相应地进行调整。

  4. 加载并绘制图像: 使用提供的路径加载图像,如果加载成功,则使用原始大小直接绘制图像。注意到这里没有使用 .scaled() 方法,这样会保持图像的实际大小。

  5. 错误处理: 检查加载的 QPixmap 是否为空,以防止尝试在未成功加载的情况下进行绘制。

这样就可以确保您的背景图片按照原始大小显示。如果有任何其他需求或者问题,请随时问我!


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

目录导航
  • 修改后的代码示例
  • 解释
  • 本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
    转载请注明出处:https://qt.0voice.com/?id=13228

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

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

    联系我们

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

    微信号:3007537140

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

    关注我们
    x

    注册

    已经有帐号?