Elided Label: Difference between revisions

From Qt Wiki
Jump to navigation Jump to search
No edit summary
No edit summary
Line 1: Line 1:
Just call this function and you're good to go.
Just call this function and you're good to go.


<code><br />//! Set the elide mode used for displaying text.<br /> void setElideMode(Qt::TextElideMode elideMode) {<br /> elideMode_ = elideMode;<br /> updateGeometry();<br /> }<br /></code>
<code>
//! Set the elide mode used for displaying text.
void setElideMode(Qt::TextElideMode elideMode) {
elideMode_ = elideMode;
updateGeometry();
}
</code>


<code>#ifndef ELIDEDLABEL_H<br />#define ELIDEDLABEL_H
<code>#ifndef ELIDEDLABEL_H
#define ELIDEDLABEL_H


#include <QLabel>
#include <QLabel>


/*<br />MIT - Yash : Speedovation.com [ Picked from internet and modified. if owner needs to add or change license do let me know.]<br />*/
/*
MIT - Yash : Speedovation.com [ Picked from internet and modified. if owner needs to add or change license do let me know.]
*/


class ElidedLabel : public QLabel {<br /> Q_OBJECT
class ElidedLabel : public QLabel {
Q_OBJECT


public:<br /> ElidedLabel(QWidget '''parent = 0, Qt::WindowFlags f = 0);<br /> ElidedLabel(const QString &amp;txt, QWidget''' parent = 0, Qt::WindowFlags f = 0);<br /> ElidedLabel(const QString &amp;txt,<br /> Qt::TextElideMode elideMode = Qt::ElideRight,<br /> QWidget * parent = 0,<br /> Qt::WindowFlags f = 0);
public:
ElidedLabel(QWidget '''parent = 0, Qt::WindowFlags f = 0);
ElidedLabel(const QString &amp;txt, QWidget''' parent = 0, Qt::WindowFlags f = 0);
ElidedLabel(const QString &amp;txt,
Qt::TextElideMode elideMode = Qt::ElideRight,
QWidget * parent = 0,
Qt::WindowFlags f = 0);


public:<br /> //! Set the elide mode used for displaying text.<br /> void setElideMode(Qt::TextElideMode elideMode) {<br /> elideMode_ = elideMode;<br /> updateGeometry();<br /> }
public:
//! Set the elide mode used for displaying text.
void setElideMode(Qt::TextElideMode elideMode) {
elideMode_ = elideMode;
updateGeometry();
}


//! Get the elide mode currently used to display text.<br /> Qt::TextElideMode elideMode() const { return elideMode_; }
//! Get the elide mode currently used to display text.
Qt::TextElideMode elideMode() const { return elideMode_; }


public: // QLabel overrides<br /> void setText(const QString &amp;);
public: // QLabel overrides
void setText(const QString &amp;);


protected: // QLabel overrides<br /> void paintEvent(QPaintEvent ''');<br /> void resizeEvent(QResizeEvent''');
protected: // QLabel overrides
void paintEvent(QPaintEvent ''');
void resizeEvent(QResizeEvent''');


protected:<br /> //! Cache the elided text so as to not recompute it every paint event<br /> void cacheElidedText(int w);
protected:
//! Cache the elided text so as to not recompute it every paint event
void cacheElidedText(int w);


private:<br /> Qt::TextElideMode elideMode_;<br /> QString cachedElidedText;<br />};
private:
Qt::TextElideMode elideMode_;
QString cachedElidedText;
};


#endif // ELIDEDLABEL_HPP<br /></code>
#endif // ELIDEDLABEL_HPP
</code>


<code>#include "ElidedLabel.h"
<code>#include "ElidedLabel.h"


#include <QDebug><br />#include <QPainter><br />#include <QResizeEvent>
#include <QDebug>
#include <QPainter>
#include <QResizeEvent>


ElidedLabel::ElidedLabel(QWidget *parent, Qt::WindowFlags f)<br /> : QLabel(parent, f) , elideMode_(Qt::ElideRight)<br />{<br /> // setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Preferred);<br />}
ElidedLabel::ElidedLabel(QWidget *parent, Qt::WindowFlags f)
: QLabel(parent, f) , elideMode_(Qt::ElideRight)
{
// setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Preferred);
}


ElidedLabel::ElidedLabel(const QString &amp;txt, QWidget *parent, Qt::WindowFlags f)<br /> : QLabel(txt, parent, f) , elideMode_(Qt::ElideRight)<br />{<br />}
ElidedLabel::ElidedLabel(const QString &amp;txt, QWidget *parent, Qt::WindowFlags f)
: QLabel(txt, parent, f) , elideMode_(Qt::ElideRight)
{
}


ElidedLabel::ElidedLabel(const QString &amp;txt, Qt::TextElideMode elideMode,<br /> QWidget *parent, Qt::WindowFlags f) : QLabel(txt, parent, f)<br /> , elideMode_(elideMode)<br />{<br />}
ElidedLabel::ElidedLabel(const QString &amp;txt, Qt::TextElideMode elideMode,
QWidget *parent, Qt::WindowFlags f) : QLabel(txt, parent, f)
, elideMode_(elideMode)
{
}


void ElidedLabel::setText(const QString &amp;txt) {<br /> QLabel::setText(txt);<br /> cacheElidedText(geometry().width());<br />}
void ElidedLabel::setText(const QString &amp;txt) {
QLabel::setText(txt);
cacheElidedText(geometry().width());
}


void ElidedLabel::cacheElidedText(int w) {<br /> cachedElidedText = fontMetrics().elidedText(text(), elideMode_, w, Qt::TextShowMnemonic);<br />}
void ElidedLabel::cacheElidedText(int w) {
cachedElidedText = fontMetrics().elidedText(text(), elideMode_, w, Qt::TextShowMnemonic);
}


void ElidedLabel::resizeEvent(QResizeEvent *e) {<br /> QLabel::resizeEvent(e);<br /> cacheElidedText(e->size().width());<br />}
void ElidedLabel::resizeEvent(QResizeEvent *e) {
QLabel::resizeEvent(e);
cacheElidedText(e->size().width());
}


void ElidedLabel::paintEvent(QPaintEvent *e) {<br /> if(elideMode_ == Qt::ElideNone) {<br /> QLabel::paintEvent(e);<br /> } else {<br /> QPainter p(this);<br /> p.drawText(0, 0,<br /> geometry().width(),<br /> geometry().height(),<br /> alignment(),<br /> cachedElidedText);<br /> }<br />}
void ElidedLabel::paintEvent(QPaintEvent *e) {
if(elideMode_ == Qt::ElideNone) {
QLabel::paintEvent(e);
} else {
QPainter p(this);
p.drawText(0, 0,
geometry().width(),
geometry().height(),
alignment(),
cachedElidedText);
}
}


</code>
</code>

Revision as of 12:27, 25 February 2015

Just call this function and you're good to go.

//! Set the elide mode used for displaying text.
 void setElideMode(Qt::TextElideMode elideMode) {
 elideMode_ = elideMode;
 updateGeometry();
 }
#ifndef ELIDEDLABEL_H
#define ELIDEDLABEL_H

#include <QLabel>

/*
MIT - Yash : Speedovation.com [ Picked from internet and modified. if owner needs to add or change license do let me know.]
*/

class ElidedLabel : public QLabel {
 Q_OBJECT

public:
 ElidedLabel(QWidget '''parent = 0, Qt::WindowFlags f = 0);
 ElidedLabel(const QString &amp;txt, QWidget''' parent = 0, Qt::WindowFlags f = 0);
 ElidedLabel(const QString &amp;txt,
 Qt::TextElideMode elideMode = Qt::ElideRight,
 QWidget * parent = 0,
 Qt::WindowFlags f = 0);

public:
 //! Set the elide mode used for displaying text.
 void setElideMode(Qt::TextElideMode elideMode) {
 elideMode_ = elideMode;
 updateGeometry();
 }

//! Get the elide mode currently used to display text.
 Qt::TextElideMode elideMode() const { return elideMode_; }

public: // QLabel overrides
 void setText(const QString &amp;);

protected: // QLabel overrides
 void paintEvent(QPaintEvent ''');
 void resizeEvent(QResizeEvent''');

protected:
 //! Cache the elided text so as to not recompute it every paint event
 void cacheElidedText(int w);

private:
 Qt::TextElideMode elideMode_;
 QString cachedElidedText;
};

#endif // ELIDEDLABEL_HPP
#include "ElidedLabel.h"

#include <QDebug>
#include <QPainter>
#include <QResizeEvent>

ElidedLabel::ElidedLabel(QWidget *parent, Qt::WindowFlags f)
 : QLabel(parent, f) , elideMode_(Qt::ElideRight)
{
 // setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Preferred);
}

ElidedLabel::ElidedLabel(const QString &amp;txt, QWidget *parent, Qt::WindowFlags f)
 : QLabel(txt, parent, f) , elideMode_(Qt::ElideRight)
{
}

ElidedLabel::ElidedLabel(const QString &amp;txt, Qt::TextElideMode elideMode,
 QWidget *parent, Qt::WindowFlags f) : QLabel(txt, parent, f)
 , elideMode_(elideMode)
{
}

void ElidedLabel::setText(const QString &amp;txt) {
 QLabel::setText(txt);
 cacheElidedText(geometry().width());
}

void ElidedLabel::cacheElidedText(int w) {
 cachedElidedText = fontMetrics().elidedText(text(), elideMode_, w, Qt::TextShowMnemonic);
}

void ElidedLabel::resizeEvent(QResizeEvent *e) {
 QLabel::resizeEvent(e);
 cacheElidedText(e->size().width());
}

void ElidedLabel::paintEvent(QPaintEvent *e) {
 if(elideMode_ == Qt::ElideNone) {
 QLabel::paintEvent(e);
 } else {
 QPainter p(this);
 p.drawText(0, 0,
 geometry().width(),
 geometry().height(),
 alignment(),
 cachedElidedText);
 }
}