QWidget、QLabel、QPushButton的elidemode(省略模式)

elidemode(省略模式),指文本超出控件显示范围时,以省略号代替未能显示的文本,效果如下图:


在QT中(当前为5.3版本)QTabBar、QTabWidget、QAbstractScrollArea及其子类QColumnView, QHeaderView, QListView, QTableView, and QTreeView可以通过setElideMode(Qt::TextElideMode)或者setTextElideMode(Qt::TextElideMode mode)设置当文本超出tab或者Item时的省略模式,但其他QWidget并未明确指出。


当上帝为你关闭了一扇门,必定会为你打开一扇窗

在QT助手中搜索 Elided Label Example,会发现这里提供了一个QWidget的Elide做法,可供参考。


下面我抛砖引玉,介绍一下QWidget的elide方法,一般会在QLabel或者QPushButton中用到。如果大家有更好建议希望能一起讨论。附:QT开发群(65574756)。

我们还是从上帝的那扇窗里进出,揪出了QFontMetrics他有一个接口叫做QString QFontMetrics::elidedText(const QString & text, Qt::TextElideMode mode, int width, int flags = 0) ,有没有很熟悉呢。第一个参数text:是需要省略处理的文本,第二个mode:省略模式,Qt::ElideLeft省略号在左侧、Qt::ElideRight右侧、Qt::ElideMiddle中间、Qt::ElideNone不出现省略号。第三个参数width用来显示文本的宽度。会根据这个宽度判断是否文本超出。

下面就是具体的使用环节了:

    QString text("text elide");
    QWidget* elideWidget = new QWidget(this);
    QFontMetrics elidfont(elideWidget->font());
    elideWidget->setText (elidfont.elidedText (text, Qt::ElideMiddle, elideWidget->width());
 
 


应该比较明确了,QFontMetrics 的初始化用到 QFont,此处QFont为需要设置文本的QLabel或者QPushButton的Font,modeQt::ElideMiddle,width为控件的宽度

设置文本的时候通过QFontMetrics的elidedText 接口设置文本,当文本超过elidedText 函数第三个参数的宽度值时就会出现省略号。


如果有错误之处,望大家雪亮的眼睛给予指正,如有更好的解决方法,不吝赐教。QT开发群(65574756)。

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值