Qt QLineEdit 根据拉伸宽度自动加省略点
2016-04-15 09:35
549 查看
#include <QLineEdit> class ElidedQLineEdit : public QLineEdit { Q_OBJECT public: explicit ElidedQLineEdit(QWidget *parent=0); explicit ElidedQLineEdit(const QString &text, QWidget *parent=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; }; ElidedQLineEdit::ElidedQLineEdit(QWidget *parent) : QLineEdit(parent) { this->setMinimumWidth(0); } ElidedQLineEdit::ElidedQLineEdit(const QString &text, QWidget *parent) : QLineEdit(text, parent), m_fullText(text) { this->setMinimumWidth(0); } void ElidedQLineEdit::setText(const QString &text) { setFullText(text); } void ElidedQLineEdit::setFullText(const QString &text) { m_fullText = text; update(); } void ElidedQLineEdit::setTextLimitShrink(const QString &text, int width) { this->setMinimumWidth(qMin(this->fontMetrics().width(text), width)); setFullText(text); } void ElidedQLineEdit::setTextLimitExpand(const QString &text) { int textWidth = this->fontMetrics().width(text); this->setMaximumWidth(textWidth); setFullText(text); } QString ElidedQLineEdit::fullText() const { return m_fullText; } void ElidedQLineEdit::paintEvent(QPaintEvent *event) { QLineEdit::paintEvent(event); elideText(); } void ElidedQLineEdit::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()); QLineEdit::setText(showText); } else { QLineEdit::setText(m_fullText); } }http://blog.csdn.net/tujiaw/article/details/44983201 实现了QLabel的子类,使其根据宽度自动加省略点和ToolTip。 但是发现当开始显示字符串的宽度小于QLabel控件的宽度时字符串会正常显示,但把QLabel宽度缩小至小于QLabel宽度后,还是会显示完整的字符串,没有截断字符串并加省略点
实现QLineEdit 子类会根据宽度自动加省略点 就不会出现上面的问题
相关文章推荐
- QT学习 第一章:基本对话框
- 使用Shiboken为C++和Qt库创建Python绑定
- Qt 5.6更新至RC版,最终版本近在咫尺
- Qt定时器和随机数详解
- Qt实现图片移动实例(图文教程)
- Qt for Android开发实例教程
- QModelIndex/Role/Model介紹<二>
- 基于PyQt5的快速开发框架QFramer
- OSX下安装PyQt
- ok6410开发板移植DirectFB手记
- 【笔记】给Qt内嵌一个Chrome吧
- 【算法】最短路径之A*搜索
- qt入门必备
- 在 Qt4 中使用 C++11
- Hello Word ~ v0.2.2 背单词软件发布 -- By WHYPRO
- ubuntu下opencv和qt的安装配置
- linux下opengl的安装(with qt)
- qt 学习小节
- QT编译时Cannot find -lGL
- QT的命名风格