使用标签控件时我首先想到的就是QLabel,QLabel支持自动换行,并可以解析富文本,是一个不错的选择,这也使的我并没有去深入了解其他的可以有 同样效果的控件,本篇文字我也主要是讲解标签的用法,可以如果QLabel既然能满足我的需求了,我为什么还要写这篇文字呢,原因就如下:QLabel自 动换行时不可以把一个字分开,例如出现一个很长的字符串时,这样就出现两种情况,一种就是产生水平滚动条;另外一种就是文字有一部分看不到了基于以上问 题,我开始了寻找其他控件替代QLabel,首先我找到的就是QTextBrowser,这个类也基本上满足了在QLabel实现不了的功能,我自己封装 的类代码如下:

头文件

 1 class CLabelBrowser : public QTextBrowser
 2 
 3 {
 4 
 5 Q_OBJECT
 6 
 7 public:
 8 
 9 CLabelBrowser(QWidget * parent = nullptr, bool enbale = false);
10 
11 ~CLabelBrowser();
12 
13 public:
14 
15 void SetAutoHeight(bool enbale){ m_AutoHeight = enbale; }//设置行高是否随内容自动变化
16 
17 void ResetHeight();
18 
19 protected:
20 
21 virtual bool event(QEvent *) Q_DECL_OVERRIDE;
22 
23 virtual void resizeEvent(QResizeEvent *) Q_DECL_OVERRIDE;
24 
25 virtual void changeEvent(QEvent *) Q_DECL_OVERRIDE;
26 
27 private:
28 
29 bool m_AutoHeight = false;//自动行高,不显示滚动条
30 
31 };
View Code

相关文章: