QLabel根据拉伸宽度自动加省略点和ToolTip
来源:互联网 发布:怎么删淘宝评论 编辑:程序博客网 时间:2024/06/05 08:35
#pragma once#include <QLabel>class ElidedLabel : public QLabel{Q_OBJECTpublic:explicit ElidedLabel(QWidget *parent=0, Qt::WindowFlags f=0);explicit ElidedLabel(const QString &text, QWidget *parent=0, Qt::WindowFlags f=0);void setText(const QString &text);void setFullText(const QString &text);void setTextLimitShrink(const QString &text, int width);void setTextLimitExpand(const QString &text);QString fullText() const;protected:void paintEvent(QPaintEvent *);private:void elideText();private:QString m_fullText;};
#include "elidedlabel.h"#include <QtWidgets>ElidedLabel::ElidedLabel(QWidget *parent, Qt::WindowFlags f): QLabel(parent, f){this->setMinimumWidth(0);setTextFormat(Qt::PlainText);}ElidedLabel::ElidedLabel(const QString &text, QWidget *parent, Qt::WindowFlags f): QLabel(text, parent, f), m_fullText(text){this->setMinimumWidth(0);setTextFormat(Qt::PlainText);}void ElidedLabel::setText(const QString &text){setFullText(text);}void ElidedLabel::setFullText(const QString &text){m_fullText = text;update();}void ElidedLabel::setTextLimitShrink(const QString &text, int width){this->setMinimumWidth(qMin(this->fontMetrics().width(text), width));setFullText(text);}void ElidedLabel::setTextLimitExpand(const QString &text){int textWidth = this->fontMetrics().width(text);this->setMaximumWidth(textWidth);setFullText(text);}QString ElidedLabel::fullText() const{return m_fullText;}void ElidedLabel::paintEvent(QPaintEvent *event){QLabel::paintEvent(event);elideText();}void ElidedLabel::elideText(){QFontMetrics fm = this->fontMetrics();int dif = fm.width(m_fullText) - this->width();if (dif > 0) {QString showText = fm.elidedText(m_fullText, Qt::ElideRight, this->width());QLabel::setText(showText);if (showText != m_fullText) {this->setToolTip(m_fullText.left(1024));} else {this->setToolTip("");}} else {QLabel::setText(m_fullText);this->setToolTip("");}}
1.注意它的水平拉伸策略,需要expand
2.注意控件本身的padding, margin值它会影响width(包括了一些空白部分),所以不要设置这两个值。
0 0
- QLabel根据拉伸宽度自动加省略点和ToolTip
- Qt QLineEdit 根据拉伸宽度自动加省略点
- div超过一定的高度和宽度自动省略
- bootstrap 有省略点才显示tooltip
- 一行文字超出宽度自动省略样式
- android 图片宽度填满屏幕宽度,图片高度根据图片的比例自动匹配,这样就不会拉伸图片
- iOS UILabel根据字符串长度自动适应宽度和高度
- 单行显示的UILabel根据文字内容自动调整宽度,文字下方加下划线
- 根据宽高自动拉伸ImageView
- DIV背景图片随DIV高度宽度变化而自动拉伸
- android 使用TableLayout 实现布局自动拉伸宽度
- table 设置自动宽度后 td 的固定宽度 在 谷歌浏览器自动拉伸
- Label:根据文字自动调整大小 并 添加tooltip提示
- jtable 根据内容自动调整表格宽度
- tabel根据设置的宽度自动换行
- js根据手机屏幕宽度自动设置字体大小
- 根据屏幕拉伸自动调整iframe 的高度
- 根据网页宽度给BODY加不同的类名
- linux多线程学习设置线程调度权限
- Mac&iOS之多线程runloop
- 安装时提示 INSTALL_PARSE_FAILED_MANIFEST_MALFORMED
- android4.1.2 DexClassLoader is not owned by the current user 问题
- iOS第三方之FMDB
- QLabel根据拉伸宽度自动加省略点和ToolTip
- Jquery插件小知识
- redis在PHP中的基本使用案例
- iOS内购实现及测试Check List
- Java垃圾回收机制
- Sicily 13914. Train Passengers
- POJ 1008 Maya Calendar [解题报告] Java
- 关于valgrind两篇很好的文章
- 【区间dp】括号序列再战猪猪侠