天天看點

qt lineedit擷取内容_Qt官方示例文本省略

本示例建立一個類似于QLabel的小部件,如果文本太長而無法适合小部件的幾何形狀,則該小部件将以省略号的方式隐藏最後一條的可見行。
qt lineedit擷取内容_Qt官方示例文本省略

  本示例ElidedLabel類是其實作核心,如果文本超出設定的矩形範圍,則省略最後一條可見行。

ElidedLabel類定義

  像QLabel一樣,它ElidedLabel繼承自QFrame。這是ElidedLabel該類的定義:

  

isElided

屬性取決于視窗小部件的字型,文本内容和幾何形狀。每當這些更改中的任何一個發生時,

elisionChanged()

信号都可能觸發。我們将目前的

elided

值緩存起來,這樣就不必每次都要求重新計算它。

ElidedLabel類的實作

  除了初始化成員變量外,構造函數還将大小政策設定為水準擴充,因為這是為了填充其容器的寬度并垂直增長。

  設定文本的同時請求重繪小部件。

  在

paintEvent()

中使用

QTextLayout

将内容劃分為幾行,這些行環繞在單詞邊界上。除最後一個可見行外,每行均在上一行下方繪制

lineSpacing

像素。

QTextLine

draw()

方法将使用坐标點作為左上角來繪制線條。

  可是,

QTextLayout

不會忽略文本,是以必須以不同的方式對待最後一個可見行。如果最後一行太寬,則将其删除。

QPainter

drawText()

方法從基線開始繪制文本,該基線是最後繪制的線條下方的

ascecnt()

像素。

  最後,再建立一行以檢視所有内容是否都适合該行。

關于更多

  • 在QtCreator軟體可以找到:
    qt lineedit擷取内容_Qt官方示例文本省略
  • 或在以下Qt安裝目錄找到:
  • 相關連結
  • Qt君公衆号回複"入群"後,在群檔案擷取本示例代碼。
  • Qt君公衆号回複『Qt示例』擷取更多内容。