QT开发中文网

#ifndef SENDITEM_H #define SENDITEM_H #include namespace Ui { class sendItem; } class sendItem : public QWidget { Q_OBJECT public: explicit sendItem(QWidget *parent = nullptr); ~sendItem(); public: int height; voi...

在你的代码中,当文本宽度超过最大宽度时,已经启用了自动换行功能,并调用了ui->lbl_msg->adjustSize()来调整QLabel的大小。但是,在设置完自动换行后,需要等待Qt进行布局和绘制操作才能看到效果。

为了确保QLabel及时调整大小以适应文本内容,请在将sendtext()函数中对QLabel进行文本设置后,添加如下代码:

// 调整父部件的大小
this->adjustSize();

这样可以使QWidget父部件(即sendItem)也随着QLabel的尺寸变化而调整大小。然后再执行resize()函数将sendItem窗口的高度设置为正确的值。

修改后的代码片段如下:

void sendItem::sendtext(QString text)
{
    ui->lbl_msg->setText(text);
    // 获取QLabel当前使用的字体
    QFont font = ui->lbl_msg->font();
    // 创建一个QFontMetrics对象,用于测量文本宽度
    QFontMetrics metrics(font);
    // 设置最大宽度
    int maxWidth = 200; // 设置最大宽度为200像素
    // 测量文本的宽度
    int textWidth = metrics.width(text);
    
    if (textWidth > maxWidth) {
        // 当文本宽度超过最大宽度时,启用自动换行
        ui->lbl_msg->setWordWrap(true);
        ui->lbl_msg->adjustSize();
    } else {
        // 当文本宽度未超过最大宽度时,禁用自动换行
        ui->lbl_msg->setWordWrap(false);
        ui->lbl_msg->adjustSize();
    }
    
    height = ui->lbl_msg->height();
    resize(801, height + 50);
    this->adjustSize(); // 调整父部件的大小
}

这样,当QLabel的尺寸发生变化后,sendItem窗口会随之调整大小。希望能够解决你遇到的问题。


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

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

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

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

联系我们

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

微信号:3007537140

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

关注我们
x

注册

已经有帐号?