首页 > 其他分享 >Qt之设置QLabel内容太长显示补全处理方法

Qt之设置QLabel内容太长显示补全处理方法

时间:2023-09-30 10:31:28浏览次数:42  
标签:Qt 省略号 QFontMetrics label QLabel ui 文本 补全

Qt之设置QLabel内容太长显示补全处理方法_Qt


#include "mainwindow.h"#include "ui_mainwindow.h"
#include <QFontMetrics>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
QString newStr = ui->label->text();
QFontMetrics fontWidth(ui->label->font()); 
QString elideNote = fontWidth.elidedText(newStr, Qt::ElideRight, ui->label->width());
ui->label->setText(elideNote); 
ui->label->setToolTip(newStr); 

}
MainWindow::~MainWindow()
{
delete ui;
}

1 让其自动换行


ui->label->adjushSize();   //自适应大小ui->label->setWordWrap(true); //自动换行

2 使用QFontMetrics::elidedText函数让文本显示省略号(省略号位置可以在文本开头/中间/末尾)

函数原型:QString QFontMetrics::elidedText(const QString &text, Qt::TextElideMode mode, int width, int flags = 0) const 第二个参数为文本缩略后,省略号所在的位置,可选:

Qt::ElideLeft 0 省略号应出现在文本的开头。

Qt::ElideRight 1 省略号应出现在文本的末尾。

Qt::ElideMiddle 2 省略号应出现在文本的中间。

Qt::ElideNone 3 省略号不应出现在文本中。

示例代码:

QString str = ui->label->text();
    QFontMetrics metrics(ui->label->font());
    if (metrics.width(str) > ui->label->width())
    {
        str = QFontMetrics(ui->label->font()).elidedText(str, Qt::ElideRight, ui->label->width());
    }
    ui->label->setText(str);

3 动态算出文本的宽高,在paintEvent里面自己绘制。

注:文本是基于 base line 绘制的,而不是文本的左上角。

示例代码:

通过drawText绘制

void MainWidget::paintEvent(QPaintEvent *){
QPainter painter(this);
painter.setRenderHint(QPainter::Antialiasing);
painter.setFont(QFont("Times", 150, QFont::Bold));
QFontMetrics metrics = painter.fontMetrics();
int x = 0;
int y = metrics.ascent();
painter.drawText(x, y, "这是一个非常非常非常长的字符串");
}

标签:Qt,省略号,QFontMetrics,label,QLabel,ui,文本,补全
From: https://blog.51cto.com/u_12597366/7661156

相关文章

  • QT: 电子商城系统-MYSQL数据库代码
    QT: 第17章【统合实例】电子商城系统MYSQL代码:/*SQLyogUltimatev12.3.2(64bit)MySQL-8.0.11:Database-emarket**********************************************************************//*!40101SETNAMESutf8*/;/*!40101SETSQL_MODE=''*/;/*!40......
  • 【Qt6】列表模型——树形列表
    QStandardItemModel类作为标准模型,主打“类型通用”,前一篇水文中,老周还没提到树形结构的列表,本篇咱们就好好探讨一下这货。还是老办法,咱们先做示例,然后再聊知识点。下面这个例子,使用QTreeView组件来显示数据,使用的列表模型比较简单,只有一列。#include<QApplication>#inclu......
  • QT QPixmap QImage内存泄漏
    无论是在代码中还是在UI中设置icon都会产生内存泄漏大概看了下,好像是QPixmap的data_ptr的引用计数,到不了1/0(查看引用计数,释放后,理论上应回到1)试了下,仅以下两种方式不会产生内存泄漏:1、从XPM加载:img=QPixmap(result);  //result为  staticconstchar*result[]={。......
  • 9. seqtk seqkit gtftk 总结
    1.背景  在前面小节我们使用了这些软件,因为混合使用比较让人混乱,这里总结理清楚一下.2.seqtk  功能总览如下图所示.2.1seq  这个功能主要是对\(.fasta\)和\(.fastq\)格式的文件进行格式化.\(-l\)  主要是让序列每行显示多少个碱基#每行显示60个氨基酸se......
  • 【Python进阶-PyQt5】00搭建PyQt5环境
    1.创建独立开发虚拟环境1.1虚拟环境简介我们编写的程序,有时用到的Python库是不一样的,比如说开发桌面应用程序我们主要用到PyQt5相关的Python库、开发Web应用程序我们主要用到Django相关的Python库等等。假设我们在开发桌面应用程序的时候除了PyQt5相关的Python库外,还附加了其他......
  • QT环境变量
    exportQT_DIR=/userdata/bin/qtlibexportQT_QPA_PLATFORM=eglfsexportQT_QPA_EGLFS_INTEGRATION=eglfs_kmsexportQT_QPA_EGLFS_KMS_PLANE_INDEX=1exportQT_QPA_EGLFS_ALWAYS_SET_MODE=1exportQT_QPA_EGLFS_NO_LIBINPUT=1exportQT_LOGGING_RULES='qt.qpa.*=false&#......
  • Qt QSS 样式
    //****QPushButton********//QPushButton{ color:rgb(255,255,255);background-color:rgbrgb(0,161,231);/*背景色*/border-style:outset;/*边框风格*/border-width:0px;/*边框宽度*/border-color:rgb(10,46,112);/*边框颜色*/border-radius:0px;/*......
  • Qt实现录屏功能,支持录制视频和gif
    最近在调试工程的时候,看到项目中使用opencv的方式进行录制软件界面视频,于是有了一个想法,做一个录屏的功能结合了视频录制和gif录制。界面比较简单,就支持选择录制视频还是gif,以及帧率选择。以及录制时候,不允许改变客户端大小,只能录制点击录制前的,客户端中透明区域所在的屏幕。界......
  • QT之ARM平台的移植
    原文: https://www.cnblogs.com/jzcn/p/15201582.html在开发板中运行QT程序的基本条件是具备QT环境,那么QT的移植尤为重要,接下载我将和小伙伴们一起学习QT的移植。一、准备材料tslib源码qt-everywhere-src-5.12.9.tar.xz源码arm开发版二、获取安装包tslib源码的git获取......
  • Qt报错: variable has incomplete typte ‘QJsonObject’
    Qt常见运行失败的记录1.变量声明未实例化变量在头文件声明了,没new出来直接使用,导致程序运行崩溃2.定义变量时候下面出行红线,出现variblehasincompletetype‘QTextStream’variblehasincompletetype'QTextStream未添加QTextStream头文件3.Qt信号与槽连接失败的几......