中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當前位置: 首頁 > news >正文

做網(wǎng)站圖片路徑做緩存嗎快速網(wǎng)站輕松排名

做網(wǎng)站圖片路徑做緩存嗎,快速網(wǎng)站輕松排名,大連做網(wǎng)站優(yōu)化公司,學做效果圖網(wǎng)站有哪些軟件文章目錄 一、QLabel類介紹二、Properties(屬性)三、Public Functions(公共函數(shù))1.構(gòu)造函數(shù)2.alignment與setAlignment函數(shù) -- 標簽內(nèi)容的對齊方式3.buddy與setBuddy函數(shù) -- QLabel關(guān)聯(lián)的伙伴控件4.hasScaledContents與setScaledC…

文章目錄

  • 一、QLabel類介紹
  • 二、Properties(屬性)
  • 三、Public Functions(公共函數(shù))
    • 1.構(gòu)造函數(shù)
    • 2.alignment與setAlignment函數(shù) -- 標簽內(nèi)容的對齊方式
    • 3.buddy與setBuddy函數(shù) -- QLabel關(guān)聯(lián)的伙伴控件
    • 4.hasScaledContents與setScaledContents函數(shù)-- 是否自動縮放其顯示的內(nèi)容以適應(yīng)控件的大小
    • 5.hasSelectedText與selectedText函數(shù)--文本選中
    • 6. indent與setIndent函數(shù)--標簽文本的縮進像素值
    • 7.margin與setMargin函數(shù)--邊距的寬度
    • 8.movie與setMovie函數(shù) -- 標簽上的動畫QMovie
    • 9.openExternalLinks與setOpenExternalLinks函數(shù)--控制顯示外部鏈接
    • 10.picture與setPicture函數(shù)--設(shè)置QPicture對象
    • 11.pixmap與setPixmap函數(shù)--設(shè)置QPixmap對象
    • 12.selectionStart函數(shù)--獲取選中文本的起始索引
    • 13.setSelection函數(shù)--指定文本選中的范圍
    • 14.textFormat與setTextFormat函數(shù)--標簽的文本格式
    • 15.text與setText函數(shù)--設(shè)置文本
    • 16.textInteractionFlags與setTextInteractionFlags函數(shù) -- 標簽文本交互標志
    • 17.wordWrap與setWordWrap函數(shù)--標簽文本自動換行
  • 四、Reimplemented Public Functions(重載)
    • 1.heightForWidth函數(shù)
    • 2.minimumSizeHint函數(shù)
    • 3.sizeHint函數(shù)
  • 五、Public Slots(公共槽函數(shù))
    • 1.clear函數(shù)--清除QLabel控件中顯示的所有內(nèi)容
    • 2.setMovie函數(shù)--設(shè)置標簽內(nèi)容為QMovie對象
    • 3.setNum函數(shù)--設(shè)置標簽內(nèi)容為傳入數(shù)值的文本表示
    • 4.setPicture函數(shù)--設(shè)置標簽 的內(nèi)容為QPicture對象
    • 5.setPixmap函數(shù)--設(shè)置標簽控件為QPixmap對象
    • 6.setText函數(shù)--設(shè)置標簽控件的文本
  • 六、Signals(信號)
    • 1.linkActivated信號
    • 2.linkHovered信號
  • 七、Reimplemented Protected Functions(重載)
    • 1.changeEvent函數(shù)
    • 2.contextMenuEvent函數(shù)--右鍵點擊上下文菜單事件
    • 3.event函數(shù)--接收與處理所有事件
    • 4.focusInEvent函數(shù)-獲得焦點事件
    • 5.focusNextPrevChild函數(shù)--焦點轉(zhuǎn)移事件
    • 6.focusOutEvent函數(shù)--失去焦點事件
    • 7.keyPressEvent函數(shù) -- 鍵盤按鍵事件
    • 8.mouseMoveEvent函數(shù)--鼠標移動事件
    • 9.mousePressEvent函數(shù)--鼠標按鍵按下事件
    • 10.mouseReleaseEvent函數(shù) --鼠標按鍵釋放事件
    • 11.paintEvent函數(shù) -- 控件繪制事件

一、QLabel類介紹

??QLabel控件是一個用于顯示內(nèi)容的控件,可以是文本、圖像、動畫或數(shù)字。它不提供用戶交互功能(即不提供用戶輸入事件的處理),但可以配置其外觀和布局。QLabel可以顯示純文本或富文本,開發(fā)者需要根據(jù)需要選擇合適的設(shè)置方式。可以通過設(shè)置屬性來調(diào)整文本的對齊方式、換行方式等。QLabel還可以與其它控件配合使用,通過設(shè)置焦點助記符來提高用戶體驗,這將把鍵盤焦點設(shè)置到另一個控件上。

二、Properties(屬性)

  • alignment : Qt::Alignment–標簽內(nèi)容的對齊方式

    這個屬性保存了標簽內(nèi)容的對齊方式。默認情況下,標簽的內(nèi)容是左對齊并且垂直居中。

    這個屬性的訪問函數(shù)如下:

    //用于獲取當前標簽內(nèi)容的對齊方式
    Qt::Alignment alignment() const
    //用于設(shè)置標簽內(nèi)容的對齊方式
    void setAlignment(Qt::Alignment)
    

    Qt::Alignment是一個枚舉類型,常見的對齊方式有:

    • Qt::AlignLeft:左對齊。
    • Qt::AlignRight:右對齊。
    • Qt::AlignHCenter:水平居中對齊。
    • Qt::AlignTop:頂部對齊。
    • Qt::AlignBottom:底部對齊。
    • Qt::AlignVCenter:垂直居中對齊。
    • 還可以通過位或操作組合使用上述對齊方式,例如 Qt::AlignLeft | Qt::AlignVCenter 表示左對齊且垂直居中。
  • hasSelectedText : const bool–檢查是否有文本被用戶選中

    這個屬性用于檢查是否有文本被用戶選中,如果有,則返回 true,否則返回 false。默認情況下,沒有文本被選中,因此屬性的值是 false。

    注意事項:

    • 為了使 QLabel 支持文本選擇,需要設(shè)置 textInteractionFlags 屬性,使其包含 TextSelectableByMouseTextSelectableByKeyboardTextSelectableByMouse 允許用戶通過鼠標選擇文本,而 TextSelectableByKeyboard 允許用戶通過鍵盤選擇文本。并使用 hasSelectedText() 來檢查是否有文本被選中,以及使用 selectedText() 來獲取被選中的文本。
  • indent : int – 標簽文本的縮進像素值

    這個屬性保存了標簽文本的縮進像素值。如果標簽顯示文本,縮進根據(jù)alignment()的值應(yīng)用于不同的邊緣:如果alignment()是Qt::AlignLeft,則應(yīng)用于左邊緣;如果是Qt::AlignRight,則應(yīng)用于右邊緣;如果是Qt::AlignTop,則應(yīng)用于頂部邊緣;如果是Qt::AlignBottom,則應(yīng)用于底部邊緣。

    這個屬性的訪問函數(shù)為:

    int indent() const // 獲取當前縮進值的函數(shù)
    void setIndent(int) // 設(shè)置縮進值的函數(shù)
    

    注意事項:

    • 如果 indent 屬性被設(shè)置為負數(shù),或者沒有明確設(shè)置,QLabel 將自動計算有效縮進。如果 frameWidth() 返回的邊框?qū)挾葹?,則有效縮進為0;如果邊框?qū)挾却笥?,則有效縮進為當前字體中"x"字符寬度的一半。
    • 默認情況下,縮進是-1,意味著有效縮進按照上述方式計算。
    • 縮進屬性與 alignment(對齊方式)、margin(邊距)、frameWidth(框架寬度)和 font(字體)等屬性相關(guān)聯(lián)
  • margin : int – 邊距的寬度

    這個屬性保存了邊距的寬度。即控件內(nèi)部內(nèi)容與邊框之間的空間寬度。默認邊距是0。

    這個屬性的訪問函數(shù):

    int margin() const // 獲取當前邊距值的函數(shù)
    void setMargin(int) // 設(shè)置邊距值的函數(shù)
    
  • openExternalLinks : bool – 控件在顯示鏈接時的行為

    這個屬性用來保存 QLabel 控件在顯示鏈接時的行為。默認情況下,openExternalLinks 的值是 false。如果設(shè)置為 true,當用戶點擊鏈接時,QLabel 將自動使用 QDesktopServices::openUrl() 函數(shù)打開鏈接對應(yīng)的網(wǎng)頁或資源;如果設(shè)置為 true,發(fā)出 linkActivated() 信號,用戶可以連接這個信號來自定義鏈接被激活時的行為。

    這個屬性的訪問函數(shù):

    bool openExternalLinks() const // 獲取是否自動打開外部鏈接的設(shè)置
    void setOpenExternalLinks(bool open) // 設(shè)置是否自動打開外部鏈接
    

    注意事項:

    • 為了使 QLabel 能夠識別和響應(yīng)鏈接點擊事件,需要設(shè)置 textInteractionFlags 屬性,使其包含 LinksAccessibleByMouseLinksAccessibleByKeyboard。LinksAccessibleByMouse 允許用戶通過鼠標點擊鏈接,而 LinksAccessibleByKeyboard 允許用戶通過鍵盤操作選擇和激活鏈接。
  • pixmap : QPixmap – 控件當前顯示的圖像

    這個屬性用于保存 QLabel 控件當前顯示的圖像(pixmap)。

    這個屬性的訪問方法:

    QPixmap pixmap(Qt::ReturnByValueConstant) const // 按值獲取圖像的函數(shù)
    void setPixmap(const QPixmap &) // 設(shè)置圖像的函數(shù)
    

    注意事項:

    • 通過 setPixmap(const QPixmap &) 函數(shù)設(shè)置圖像時,會清除 QLabel 控件之前顯示的所有內(nèi)容,包括文本和之前設(shè)置的圖像。同時,如果之前有設(shè)置快捷鍵伙伴(buddy shortcut),也會被禁用。
  • scaledContents : bool – 是否自動縮放其顯示的內(nèi)容以適應(yīng)控件的大小

    這個屬性用于控制 QLabel 控件是否自動縮放其顯示的內(nèi)容(如圖像或文本)以適應(yīng)控件的大小。默認情況下,scaledContentsfalse,這意味著內(nèi)容不會自動縮放來填充控件空間,而是保持其原始尺寸。當 scaledContents 設(shè)置為 true 時,如果 QLabel 正在顯示一個圖像(pixmap),這個圖像會被縮放以填充控件的所有可用空間。這可以確保圖像完全適合控件的尺寸,但可能會導(dǎo)致圖像失真。

    這個屬性的訪問函數(shù):

    bool hasScaledContents() const // 檢查是否啟用了內(nèi)容縮放的函數(shù)
    void setScaledContents(bool) // 設(shè)置是否縮放內(nèi)容以填充空間的函數(shù)
    
  • selectedText : const QString – 控件中當前被用戶選中的文本

    這個屬性保存了 QLabel 控件中當前被用戶選中的文本。默認情況下,selectedText 屬性是空的,表示沒有文本被選中

    這個屬性的訪問函數(shù):

    QString selectedText() const // 獲取當前選中文本的函數(shù)
    

    注意事項:

    • 為了使 QLabel 支持文本選擇,需要設(shè)置 textInteractionFlags 屬性,使其包含 TextSelectableByMouseTextSelectableByKeyboard。TextSelectableByMouse 允許通過鼠標選擇文本,而 TextSelectableByKeyboard 允許通過鍵盤選擇文本。
  • text : QString – 標簽的文本

    這個屬性保存了標簽的文本。如果沒有設(shè)置文本,將返回一個空字符串。設(shè)置文本會清除任何之前的內(nèi)容。

    這個屬性的訪問函數(shù):

    QString text() const // 獲取當前文本的函數(shù)
    void setText(const QString &) // 設(shè)置文本的函數(shù)
    

    注意事項:

    • QLabel 適合顯示小型富文本文檔,這些文檔的字體、文本顏色和鏈接顏色等設(shè)置可以從標簽的調(diào)色板和字體屬性中獲取。對于較大的文檔,建議使用只讀模式的 QTextEdit 控件,因為它可以提供滾動條等額外功能。
  • textFormat : Qt::TextFormat – 標簽的文本樣式

    這個屬性保存了標簽的文本格式。默認格式是 Qt::AutoText,這意味著 QLabel 將嘗試自動檢測文本的格式,根據(jù)輸入內(nèi)容決定是將其顯示為純文本還是富文本。

    這個屬性的訪問函數(shù):

    Qt::TextFormat textFormat() const // 獲取當前文本格式的函數(shù)
    void setTextFormat(Qt::TextFormat) // 設(shè)置文本格式的函數(shù)
    
  • textInteractionFlags : Qt::TextInteractionFlags – 控件在顯示文本時應(yīng)如何響應(yīng)用戶的輸入操作

    這個屬性保存了 QLabel 控件在顯示文本時應(yīng)如何響應(yīng)用戶的輸入操作。這個屬性影響用戶如何與標簽中的文本進行交互,例如,是否可以通過鼠標或鍵盤選擇文本,或者是否可以使用鍵盤操作鏈接。

    這個屬性的訪問函數(shù):

    Qt::TextInteractionFlags textInteractionFlags() const // 獲取當前文本交互標志的函數(shù)
    void setTextInteractionFlags(Qt::TextInteractionFlags flags) // 設(shè)置文本交互標志的函數(shù)
    
  • wordWrap : bool – 標簽的自動換行策略

    這個屬性保存了 QLabel 控件中文本的自動換行策略。默認情況下,自動換行是禁用的。

    • wordWrap 設(shè)置為 true 時,如果文本超出了標簽的寬度,它將在單詞的邊界處自動換行,以確保文本不會溢出標簽的邊界。
    • 如果 wordWrap 設(shè)置為 false,則文本不會自動換行,如果文本超出了標簽的寬度,它可能會被截斷或溢出。

    這個屬性的訪問函數(shù):

    bool wordWrap() const // 獲取當前是否啟用自動換行的函數(shù)
    void setWordWrap(bool on) // 設(shè)置是否啟用自動換行的函數(shù)
    

三、Public Functions(公共函數(shù))

1.構(gòu)造函數(shù)

  • 構(gòu)造一個顯示文本的標簽

    QLabel::QLabel(const QString &text, QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags())
    
    • 函數(shù)說明:

      這是 QLabel 類的構(gòu)造函數(shù)之一,用于初始化一個 QLabel 對象,使其能夠顯示指定的文本。

    • 參數(shù)說明:

      • const QString &text 表示標簽將要顯示的文本內(nèi)容。
      • QWidget *parent 是新創(chuàng)建的標簽的父控件,控件通常通過父/子關(guān)系組織,子控件通常在父控件內(nèi)部顯示。如果 parent 參數(shù)是 nullptr,那么 QLabel 將作為一個獨立的窗口被創(chuàng)建。
      • Qt::WindowFlags f 是用于定義窗口屬性的標志。如是否可調(diào)整大小、是否可最小化等。這些標志將傳遞給 QFrame 的構(gòu)造函數(shù),因為 QLabel 繼承自 QFrame。
    • 示例:

      // 創(chuàng)建一個帶有文本的標簽,作為某個父窗口的子控件
      QLabel *myLabel = new QLabel("Hello, World!", myParentWidget);// 創(chuàng)建一個頂級窗口的標簽,顯示不同的文本
      QLabel *topLevelLabel = new QLabel("I am a top-level window", nullptr);
      
  • 構(gòu)造一個空標簽

    QLabel::QLabel(QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags())
    
    • 函數(shù)說明:

      用于創(chuàng)建一個不包含任何文本或圖像的空 QLabel 對象。

    • 示例:

      // 創(chuàng)建一個空的標簽作為某個父控件的子控件
      QWidget *myWidget = new QWidget;
      QLabel *myLabel = new QLabel(myWidget);
      // 后續(xù)設(shè)置標簽的文本
      myLabel->setText("Welcome to my application!");
      

2.alignment與setAlignment函數(shù) – 標簽內(nèi)容的對齊方式

//用于獲取當前標簽內(nèi)容的對齊方式
Qt::Alignment alignment() const
//用于設(shè)置標簽內(nèi)容的對齊方式
void setAlignment(Qt::Alignment)

Qt::Alignment是一個枚舉類型,常見的對齊方式有:

  • Qt::AlignLeft:左對齊。
  • Qt::AlignRight:右對齊。
  • Qt::AlignHCenter:水平居中對齊。
  • Qt::AlignTop:頂部對齊。
  • Qt::AlignBottom:底部對齊。
  • Qt::AlignVCenter:垂直居中對齊。
  • 還可以通過位或操作組合使用上述對齊方式,例如 Qt::AlignLeft | Qt::AlignVCenter 表示左對齊且垂直居中。

3.buddy與setBuddy函數(shù) – QLabel關(guān)聯(lián)的伙伴控件

  • buddy函數(shù)

    QWidget *QLabel::buddy() const
    
    • 函數(shù)說明:

      用于獲取與 QLabel 關(guān)聯(lián)的伙伴(buddy)控件。如果沒有設(shè)置伙伴控件,buddy() 函數(shù)將返回 nullptr?;锇榭丶ǔJ桥c標簽相鄰的可交互控件,如 QLineEdit、QComboBox 等。當用戶激活標簽上的助記符時,焦點將自動轉(zhuǎn)移到伙伴控件上。

      伙伴機制是Qt中實現(xiàn)用戶界面便捷訪問的一種方式,特別是通過鍵盤快捷方式快速定位。

  • setBuddy函數(shù)

    void QLabel::setBuddy(QWidget *buddy)
    
    • 函數(shù)說明:

      用于為 QLabel 設(shè)置一個伙伴控件。當設(shè)置了伙伴控件后,如果用戶按下標簽文本中通過和號(&)指定的快捷鍵,鍵盤焦點會自動轉(zhuǎn)移到伙伴控件上。例如,如果標簽文本是 “&Name:”,則按下 Alt+N 會將焦點移動到伙伴控件。如果需要取消已經(jīng)設(shè)置的伙伴,可以通過傳遞 nullptrsetBuddy 函數(shù)來實現(xiàn)。

    • 示例:

      QLineEdit *nameEdit  = new QLineEdit(this);
      QLabel    *nameLabel = new QLabel("&Name:", this);
      nameLabel->setBuddy(nameEdit);
      QLineEdit *phoneEdit  = new QLineEdit(this);
      QLabel    *phoneLabel = new QLabel("&Phone:", this);
      phoneLabel->setBuddy(phoneEdit);
      

      將其設(shè)置布局,當用戶在窗口中按下 Alt+N 時,焦點會自動跳轉(zhuǎn)到 nameEdit;當用戶按下 Alt+P 時,焦點會自動跳轉(zhuǎn)到 phoneEdit。

      image-20240715205105274

4.hasScaledContents與setScaledContents函數(shù)-- 是否自動縮放其顯示的內(nèi)容以適應(yīng)控件的大小

bool hasScaledContents() const // 檢查是否啟用了內(nèi)容縮放的函數(shù)
void setScaledContents(bool) // 設(shè)置是否縮放內(nèi)容以填充空間的函數(shù)
  • 函數(shù)說明

    用于控制 QLabel 控件是否自動縮放其顯示的內(nèi)容(如圖像或文本)以適應(yīng)控件的大小。默認情況下,scaledContentsfalse,這意味著內(nèi)容不會自動縮放來填充控件空間,而是保持其原始尺寸。當 scaledContents 設(shè)置為 true 時,如果 QLabel 正在顯示一個圖像(pixmap),這個圖像會被縮放以填充控件的所有可用空間。這可以確保圖像完全適合控件的尺寸,但可能會導(dǎo)致圖像失真。

5.hasSelectedText與selectedText函數(shù)–文本選中

bool hasSelectedText() const //標簽中文本是否被選中
QString selectedText() const // 獲取當前選中文本的函數(shù)
  • 函數(shù)說明:

    • hasSelectedText()函數(shù)用于檢查是否有文本被用戶選中,如果有,則返回 true,否則返回 false。默認情況下,沒有文本被選中,因此屬性的值是 false。

    • selectedText()函數(shù)用于獲取 QLabel 控件中當前被用戶選中的文本。

  • 注意事項:

    • 為了使 QLabel 支持文本選擇,需要設(shè)置 textInteractionFlags 屬性,使其包含 TextSelectableByMouseTextSelectableByKeyboardTextSelectableByMouse 允許用戶通過鼠標選擇文本,而 TextSelectableByKeyboard 允許用戶通過鍵盤選擇文本。并使用 hasSelectedText() 來檢查是否有文本被選中,以及使用 selectedText() 來獲取被選中的文本。

6. indent與setIndent函數(shù)–標簽文本的縮進像素值

int indent() const // 獲取當前縮進值的函數(shù)
void setIndent(int) // 設(shè)置縮進值的函數(shù)
  • 函數(shù)說明:

    • indent()函數(shù)用于獲取當前縮進值
    • setIndent()函數(shù)用于設(shè)置縮進值
  • 注意事項:

    • 如果標簽顯示文本,縮進根據(jù)alignment()的值應(yīng)用于不同的邊緣:如果alignment()是Qt::AlignLeft,則應(yīng)用于左邊緣;如果是Qt::AlignRight,則應(yīng)用于右邊緣;如果是Qt::AlignTop,則應(yīng)用于頂部邊緣;如果是Qt::AlignBottom,則應(yīng)用于底部邊緣。

    • 如果 indent 屬性被設(shè)置為負數(shù),或者沒有明確設(shè)置,QLabel 將自動計算有效縮進。如果 frameWidth() 返回的邊框?qū)挾葹?,則有效縮進為0;如果邊框?qū)挾却笥?,則有效縮進為當前字體中"x"字符寬度的一半。

    • 默認情況下,縮進是-1,意味著有效縮進按照上述方式計算。

    • 縮進屬性與 alignment(對齊方式)、margin(邊距)、frameWidth(框架寬度)和 font(字體)等屬性相關(guān)聯(lián)

7.margin與setMargin函數(shù)–邊距的寬度

int margin() const // 獲取當前邊距值的函數(shù)
void setMargin(int) // 設(shè)置邊距值的函數(shù)
  • 函數(shù)說明:

    • margin()函數(shù)用于獲取當前邊距值。即控件內(nèi)部內(nèi)容與邊框之間的空間寬度。默認邊距是0。

    • setMargin()函數(shù)用于設(shè)置邊距值

8.movie與setMovie函數(shù) – 標簽上的動畫QMovie

  • movie函數(shù)

    QMovie *QLabel::movie() const
    
    • 函數(shù)說明:

      用于獲取當前在標簽上設(shè)置的 QMovie 對象的指針。QMovie 類用于加載和播放動畫,通常是 .gif 格式的動畫。

      • 如果 QLabel 使用 setMovie(QMovie *) 成功設(shè)置了動畫,movie() 將返回該動畫對象的指針。
      • 如果沒有為標簽設(shè)置動畫,或者之前設(shè)置的動畫已經(jīng)被刪除或停止,movie() 將返回 nullptr
  • setMovie函數(shù)

    [slot] void QLabel::setMovie(QMovie *movie)
    
    • 函數(shù)說明:

      setMovie(QMovie *movie)QLabel 類的一個槽函數(shù),用于將一個 QMovie 對象設(shè)置為標簽的內(nèi)容。QMovie 通常用于播放動畫圖像,如 GIF 文件。當調(diào)用 setMovie() 函數(shù)時,之前標簽中顯示的任何內(nèi)容(文本、圖像等)都將被清除,并替換為指定的動畫。

    • 示例

      // 創(chuàng)建一個標簽和動畫對象
      QLabel *label = new QLabel(this);
      QMovie *movie = new QMovie("path/to/your/animation.gif");// 將動畫設(shè)置到標簽上
      label->setMovie(movie);// 啟動動畫播放
      movie->start();// 稍后,可能需要檢查當前標簽是否有動畫,或者獲取動畫對象
      QMovie *currentMovie = label->movie();if (currentMovie) {// 動畫存在,可以進行一些操作,比如暫?;騽h除currentMovie->pause();
      } else {// 沒有動畫
      }
      

      image-20240715211933609

    • 注意事項:

      • 需要注意的是,QLabel 不會接管傳入的 QMovie 對象的所有權(quán)。這意味著 QMovie 對象的生命周期需要由其他地方管理,QLabel 只是使用這個對象來播放動畫,并不會在內(nèi)部刪除它。
      • 設(shè)置動畫后,如果之前有設(shè)置伙伴快捷鍵(通過 setBuddy()),則該快捷鍵將被自動禁用,因為動畫播放期間可能不適用快捷鍵。

9.openExternalLinks與setOpenExternalLinks函數(shù)–控制顯示外部鏈接

bool openExternalLinks() const // 獲取是否自動打開外部鏈接的設(shè)置
void setOpenExternalLinks(bool open) // 設(shè)置是否自動打開外部鏈接
  • 函數(shù)說明:

    • openExternalLinks()函數(shù)用于獲取openExternalLinks屬性的值

    • setOpenExternalLinks()函數(shù)用于設(shè)置openExternalLinks屬性的值

      這個屬性用來保存 QLabel 控件在顯示鏈接時的行為。默認情況下,openExternalLinks 的值是 false。如果設(shè)置為 true,當用戶點擊鏈接時,QLabel 將自動使用 QDesktopServices::openUrl() 函數(shù)打開鏈接對應(yīng)的網(wǎng)頁或資源;如果設(shè)置為 true,發(fā)出 linkActivated() 信號,用戶可以連接這個信號來自定義鏈接被激活時的行為。

  • 示例:

    // 假設(shè)有一個 QLabel 實例
    QLabel *linkLabel = new QLabel(this);// 設(shè)置 QLabel 顯示的文本,包含一個鏈接
    linkLabel->setText("Visit our <a href='https://www.example.com'>website</a>.");// 連接 linkActivated 信號以便在用戶點擊鏈接時執(zhí)行自定義操作
    connect(linkLabel, &QLabel::linkActivated, this, &MyClass::onLinkActivated);// 設(shè)置 QLabel 屬性,自動打開鏈接而不是發(fā)出信號
    linkLabel->setOpenExternalLinks(true);// 以下是 MyClass 中定義的槽函數(shù),用于處理鏈接點擊事件
    void MyClass::onLinkActivated(const QString &link) {qDebug() << "Link activated:" << link;// 可以在這里添加自定義代碼,比如打開一個新的瀏覽器窗口
    }// 如果希望手動處理鏈接點擊事件而不是自動打開鏈接,可以設(shè)置為 false
    linkLabel->setOpenExternalLinks(false);
    
  • 注意事項:

    • 為了使 QLabel 能夠識別和響應(yīng)鏈接點擊事件,需要設(shè)置 textInteractionFlags 屬性,使其包含 LinksAccessibleByMouseLinksAccessibleByKeyboardLinksAccessibleByMouse 允許用戶通過鼠標點擊鏈接,而 LinksAccessibleByKeyboard 允許用戶通過鍵盤操作選擇和激活鏈接。

10.picture與setPicture函數(shù)–設(shè)置QPicture對象

  • picture函數(shù)

    const QPicture *QLabel::picture() const
    
    • 函數(shù)說明:

      用于獲取與標簽關(guān)聯(lián)的 QPicture 對象的指針。此函數(shù)已被標記為過時,不建議使用

  • setPicture函數(shù)

    [slot] void QLabel::setPicture(const QPicture &picture)
    
    • 函數(shù)說明:

      這是 QLabel 類的一個槽函數(shù),用于將 QLabel 的內(nèi)容設(shè)置為一個 QPicture 對象。

    • 示例:

      // 創(chuàng)建一個標簽和一個 QPicture 對象
      QLabel *label = new QLabel(this);
      QPicture myPicture;// 假設(shè)我們通過某種方式填充了 myPicture 對象
      // ...// 將 QPicture 對象設(shè)置為標簽的內(nèi)容
      label->setPicture(myPicture);// 現(xiàn)在標簽將顯示 QPicture 對象中的繪圖內(nèi)容
      // 如果之前有設(shè)置伙伴快捷鍵,它將被禁用// 如果需要獲取當前標簽上的 QPicture 對象
      const QPicture *currentPicture = label->picture();// 檢查獲取的 QPicture 是否有效,并進行操作
      if (currentPicture) {// QPicture 是有效的,可以進行一些操作
      } else {// 標簽沒有設(shè)置 QPicture
      }
      
    • 注意事項:

      • 當調(diào)用 setPicture() 函數(shù)時,QLabel 之前顯示的任何內(nèi)容(無論是文本、圖像還是動畫)都會被清除,并替換為傳入的 QPicture 對象的內(nèi)容。

      • 如果 QLabel 之前設(shè)置了伙伴快捷鍵(通過 setBuddy() 函數(shù)),則在設(shè)置新的圖片內(nèi)容后,伙伴快捷鍵將被自動禁用。

11.pixmap與setPixmap函數(shù)–設(shè)置QPixmap對象

  • pixmap函數(shù)

    QPixmap QLabel::pixmap(Qt::ReturnByValueConstant) const
    
    • 函數(shù)說明

      用于獲取當前 QLabel 對象所顯示的 QPixmap 對象。QPixmap 是 Qt 中用于處理圖像的類,它包含圖像數(shù)據(jù)和與圖像相關(guān)的操作。

    • 參數(shù)說明:

      • Qt::ReturnByValueConstant 是一個枚舉值,用于指示函數(shù)應(yīng)該按值返回 QPixmap 對象。這種返回方式確保了對返回的 QPixmap 對象的修改不會影響到 QLabel 內(nèi)部的圖像數(shù)據(jù)。
  • setPixmap函數(shù)

    void setPixmap(const QPixmap &)
    
    • 函數(shù)說明:

      用于將 QLabel 控件的內(nèi)容設(shè)置為一個 QPixmap 對象。

    • 示例:

      // 創(chuàng)建一個 QLabel 實例
      QLabel *label = new QLabel(this);// 創(chuàng)建 QPixmap 對象,例如從文件加載圖像
      QPixmap pixmap("path/to/your/image.png");// 檢查 QPixmap 是否有效
      if (!pixmap.isNull()) {// 將 QPixmap 設(shè)置為 QLabel 的內(nèi)容label->setPixmap(pixmap);// 現(xiàn)在 label 將顯示加載的圖像
      } else {// QPixmap 加載失敗,可以設(shè)置默認圖像或顯示錯誤信息label->setPixmap(QPixmap("path/to/default/image.png"));
      }// 如果需要調(diào)整圖像的顯示方式,可以使用 QLabel 的其他函數(shù)
      // 例如,設(shè)置圖像的縮放行為
      label->setScaledContents(true); // 縮放圖像以填充整個標簽// 如果需要居中顯示圖像
      label->setAlignment(Qt::AlignCenter);// 如果需要調(diào)整圖像與標簽邊緣的距離
      label->setMargin(10); // 設(shè)置邊距為 10 像素
      

      image-20240715214502384

    • 注意事項:

      • 當調(diào)用 setPixmap() 函數(shù)時,任何之前 QLabel 中顯示的內(nèi)容(文本、圖像、動畫等)都將被清除,并替換為新的 QPixmap 圖像。
      • 傳入的 QPixmap 對象可以是任何有效的圖像數(shù)據(jù),包括但不限于從文件加載的圖像、由應(yīng)用程序創(chuàng)建的圖像或由其他 QLabel 控件傳遞的圖像。
      • setPixmap() 函數(shù)通過引用傳遞 QPixmap 對象,這意味著它不會復(fù)制圖像數(shù)據(jù),從而節(jié)省了內(nèi)存和提高了效率。
      • 如果傳入的 QPixmap 是空的或包含無效的圖像數(shù)據(jù),QLabel 將不會顯示任何內(nèi)容。

12.selectionStart函數(shù)–獲取選中文本的起始索引

int QLabel::selectionStart() const
  • 函數(shù)說明:

    selectionStart() 用于獲取當前被選中文本的起始索引。如果沒有文本被選中,則此函數(shù)返回 -1,表示當前沒有文本選擇。

  • 示例:

    // 假設(shè)有一個 QLabel 實例,已經(jīng)設(shè)置了可以選中文本的 flag
    QLabel *label = new QLabel("This is a selectable text.", this);
    label->setTextInteractionFlags(Qt::TextSelectableByMouse);// 假設(shè)用戶已經(jīng)通過鼠標選擇了一些文本
    // 現(xiàn)在我們想要獲取選中文本的起始索引
    int selectionStartIndex = label->selectionStart();if (selectionStartIndex != -1) {// 有文本被選中,selectionStartIndex 是選中文本的起始索引QString selectedText = label->selectedText();qDebug() << "Selected text starts at index:" << selectionStartIndex;qDebug() << "Selected text:" << selectedText;
    } else {// 沒有文本被選中qDebug() << "No text is selected.";
    }
    
  • 注意事項:

    為了能夠使用文本選擇功能,QLabeltextInteractionFlags 屬性必須設(shè)置為包含 TextSelectableByMouseTextSelectableByKeyboard。這允許用戶通過鼠標或鍵盤與文本進行交互并選擇文本。

13.setSelection函數(shù)–指定文本選中的范圍

void QLabel::setSelection(int start, int length)
  • 函數(shù)說明:

    用于指定 QLabel 中的文本選擇范圍。

  • 示例:

    // 假設(shè)有一個 QLabel 實例
    QLabel *label = new QLabel("Hello, this is a selectable text.", this);
    label->setTextInteractionFlags(Qt::TextSelectableByMouse);// 選擇 "this" 這個詞(索引從 7 開始,長度為 4)
    label->setSelection(7, 4);// 現(xiàn)在 "this" 這個詞將在 QLabel 中被選中
    // 用戶可以通過調(diào)用 selectedText() 來獲取選中的文本
    QString selectedText = label->selectedText();
    qDebug() << "Selected text:" << selectedText;
    
  • 注意事項:

    為了使 QLabel 支持文本選擇,必須設(shè)置 textInteractionFlags 屬性,包含 TextSelectableByMouseTextSelectableByKeyboard。這樣用戶才能通過鼠標或鍵盤選擇文本,或者通過代碼使用 setSelection 函數(shù)來選擇文本。

14.textFormat與setTextFormat函數(shù)–標簽的文本格式

Qt::TextFormat textFormat() const
void setTextFormat(Qt::TextFormat)
  • 函數(shù)說明:

    • 使用 textFormat() 函數(shù)可以獲取當前的文本格式設(shè)置。
    • 使用 setTextFormat(Qt::TextFormat) 函數(shù)可以設(shè)置文本的格式。例如,如果需要確保文本按純文本處理,可以顯式設(shè)置格式為 Qt::PlainText
  • 示例:

    // 創(chuàng)建一個 QLabel 實例
    QLabel *label = new QLabel(this);// 設(shè)置 QLabel 顯示的文本
    label->setText("<html><body><b>Rich text</b> example!</body></html>");// 通過 setTextFormat() 設(shè)置文本格式為富文本
    label->setTextFormat(Qt::RichText);// 獲取當前的文本格式
    Qt::TextFormat currentFormat = label->textFormat();// 檢查文本格式并據(jù)此更新界面或進行其他操作
    if (currentFormat == Qt::RichText) {// 文本格式為富文本,可以包含 HTML 標簽
    } else {// 文本格式為純文本
    }
    

    image-20240715215509319

15.text與setText函數(shù)–設(shè)置文本

QString text() const
void setText(const QString &)
  • 函數(shù)說明:

    • text()函數(shù)用于獲取當前文本
    • setText()函數(shù)用于設(shè)置文本

    在如下示例中,setText中的參數(shù)為字符串字面量,Qt中會將這種 const char* 類型的字符串字面量隱式轉(zhuǎn)換為 QString 對象。默認情況下,字符串字面量是按 ISO 8859-1 編碼的,因此,下面兩種方式等價

    // 隱式轉(zhuǎn)換示例
    label->setText("Welcome to <b>Qt</b>!");// 等同于
    label->setText(QString::fromLatin1("Welcome to <b>Qt</b>!"));
    
  • 示例:

    // 創(chuàng)建一個 QLabel 實例
    QLabel *label = new QLabel(this);// 設(shè)置文本內(nèi)容
    label->setText("Welcome to <b>Qt</b>!");// 獲取當前文本
    QString currentText = label->text();
    qDebug() << "Label text:" << currentText;// 更改文本格式為富文本
    label->setTextFormat(Qt::RichText);
    label->setOpenExternalLinks(true);	//允許外部打開鏈接
    // 如果需要更新文本內(nèi)容
    label->setText("Updated text with <a href='http://www.baidu.com'>link</a>.");// 再次獲取文本
    currentText = label->text();
    qDebug() << "Updated label text:" << currentText;
    

    image-20240715220336986

    此時,點擊鏈接,會自動打開百度網(wǎng)頁。

  • 注意事項:

    • 通過 setText(const QString &) 可以設(shè)置 QLabel 的文本內(nèi)容,這會清除之前顯示的所有內(nèi)容。
    • 文本的解釋方式(純文本或富文本)取決于 setTextFormat() 函數(shù)設(shè)置的文本格式。Qt::AutoText 作為默認設(shè)置,意味著 QLabel 將嘗試自動檢測文本的格式。
    • 如果設(shè)置了伙伴(buddy),則在設(shè)置新文本時,伙伴的助記符鍵將根據(jù)新文本進行更新。

16.textInteractionFlags與setTextInteractionFlags函數(shù) – 標簽文本交互標志

Qt::TextInteractionFlags textInteractionFlags() const //返回標簽的文本交互標志。
void setTextInteractionFlags(Qt::TextInteractionFlags flags) //設(shè)置標簽的文本交互標志。
  • 函數(shù)說明:

    • textInteractionFlags() 函數(shù)用于獲取當前 QLabel 控件的文本交互行為標志。

    • setTextInteractionFlags(Qt::TextInteractionFlags flags) 函數(shù)用于設(shè)置 QLabel 控件的文本交互行為標志、鏈接是否可以被訪問等。

      Qt::TextInteractionFlags 是一個枚舉類型,定義了不同的文本交互行為,如文本是否可以被選擇

  • 示例:

    // 創(chuàng)建一個 QLabel 實例
    QLabel *label = new QLabel("Selectable and clickable text", this);// 獲取當前的文本交互標志
    Qt::TextInteractionFlags flags = label->textInteractionFlags();
    qDebug() << "Current text interaction flags:" << flags;// 設(shè)置文本交互標志以允許鼠標選擇文本和鍵盤訪問鏈接
    label->setTextInteractionFlags(Qt::TextSelectableByMouse | Qt::LinksAccessibleByKeyboard);// 現(xiàn)在用戶可以使用鼠標選擇文本,也可以使用鍵盤操作鏈接
    

17.wordWrap與setWordWrap函數(shù)–標簽文本自動換行

bool wordWrap() const // 獲取當前是否啟用自動換行
void setWordWrap(bool on) // 設(shè)置是否啟用自動換行
  • 函數(shù)說明:

    wordWrap屬性控制 QLabel 控件中文本的自動換行策略。默認情況下,自動換行是禁用的。

    • wordWrap 設(shè)置為 true 時,如果文本超出了標簽的寬度,它將在單詞的邊界處自動換行,以確保文本不會溢出標簽的邊界。
    • 如果 wordWrap 設(shè)置為 false,則文本不會自動換行,如果文本超出了標簽的寬度,它可能會被截斷或溢出。
  • 示例

    // 創(chuàng)建一個 QLabel 實例
    QLabel *label = new QLabel("This is a long text that might not fit in one line without word wrapping.", this);// 默認情況下 wordWrap 是禁用的,設(shè)置文本
    label->setText("Text without word wrap, which may cause overflow.");// 檢查當前是否啟用了自動換行
    bool isWordWrapEnabled = label->wordWrap();
    qDebug() << "Is word wrap enabled?" << isWordWrapEnabled;// 啟用自動換行
    label->setWordWrap(true);// 再次檢查自動換行狀態(tài),現(xiàn)在應(yīng)該是啟用狀態(tài)
    isWordWrapEnabled = label->wordWrap();
    qDebug() << "Is word wrap enabled after setting to true?" << isWordWrapEnabled;// 更新文本,現(xiàn)在文本應(yīng)該在單詞邊界處自動換行
    label->setText("Updated text that will wrap at the end of the line if it's too long.");
    

    啟動自動換行策略后,顯示如下:

    image-20240715221821654

四、Reimplemented Public Functions(重載)

1.heightForWidth函數(shù)

[override virtual] int QLabel::heightForWidth(int w) const
  • 函數(shù)說明:

    重寫此函數(shù)允許 QLabel 提供自己的邏輯來確定其在特定寬度下的高度。heightForWidth(int w) constQWidget 類的一個虛函數(shù),QLabel 通過 override 關(guān)鍵字重寫了這個函數(shù)。

  • 示例:

    // 假設(shè)有一個 QLabel 的子類,我們想要自定義它在不同寬度下的高度
    class CustomLabel : public QLabel {
    protected:int heightForWidth(int w) const override {// 根據(jù)自定義邏輯計算高度// 例如,我們可以增加一些額外的空間來改善布局return QLabel::heightForWidth(w) + 10;}
    };// 在應(yīng)用程序中使用 CustomLabel
    CustomLabel *customLabel = new CustomLabel("Custom label text", this);
    // CustomLabel 的 heightForWidth 方法將在需要確定高度時被調(diào)用
    
  • 注意事項:

    重寫 heightForWidth() 函數(shù)是可選的

2.minimumSizeHint函數(shù)

[override virtual] QSize QLabel::minimumSizeHint() const
  • 函數(shù)說明:

    重寫 minimumSizeHint() 函數(shù)允許 QLabel 根據(jù)其內(nèi)容和屬性來調(diào)整最小尺寸,確保即使在空間受限的情況下也能合理顯示。minimumSizeHint() 函數(shù)是 QWidget 類的一個虛函數(shù)。

  • 示例

    // 假設(shè)有一個 QLabel 的子類,我們想要自定義它的最小尺寸提示
    class CustomLabel : public QLabel {
    protected:QSize minimumSizeHint() const override {// 根據(jù)自定義邏輯計算最小尺寸// 例如,我們可以增加一些額外的空間來改善布局QSize sizeHint = QLabel::minimumSizeHint();return QSize(sizeHint.width() + 20, sizeHint.height() + 10);}
    };// 在應(yīng)用程序中使用 CustomLabel
    CustomLabel *customLabel = new CustomLabel("Custom label text", this);
    // CustomLabel 的 minimumSizeHint 方法將在需要確定最小尺寸時被調(diào)用
    
  • 注意事項:

    重寫 minimumSizeHint() 函數(shù)是可選的

3.sizeHint函數(shù)

[override virtual] QSize QLabel::sizeHint() const
  • 函數(shù)說明:

    重寫 sizeHint() 函數(shù)允許 QLabel 根據(jù)其顯示的內(nèi)容和樣式屬性來調(diào)整建議的尺寸。sizeHint() 函數(shù)是 QFrame 類的一個虛函數(shù)

  • 示例:

    // 假設(shè)有一個 QLabel 的子類,我們想要自定義它建議的尺寸
    class CustomLabel : public QLabel {
    protected:QSize sizeHint() const override {// 根據(jù)自定義邏輯計算建議的尺寸// 例如,我們可以增加一些額外的空間來改善布局QSize hint = QLabel::sizeHint();// 假設(shè)我們想要寬度至少為 200,高度至少為 100return QSize(qMax(200, hint.width()), qMax(100, hint.height()));}
    };// 在應(yīng)用程序中使用 CustomLabel
    CustomLabel *customLabel = new CustomLabel("Custom label text", this);
    // CustomLabel 的 sizeHint 方法將在布局管理器確定尺寸時被調(diào)用
    
  • 注意事項:

    sizeHint() 函數(shù)通常在布局管理器計算控件尺寸時被調(diào)用,以確定一個合適的尺寸。

五、Public Slots(公共槽函數(shù))

1.clear函數(shù)–清除QLabel控件中顯示的所有內(nèi)容

[Slot] void QLabel::clear()
  • 函數(shù)說明:

    用于清除QLabel控件中顯示的所有內(nèi)容,無論是文本還是圖標。

2.setMovie函數(shù)–設(shè)置標簽內(nèi)容為QMovie對象

void setMovie(QMovie *movie)
  • 函數(shù)說明:

    setMovie(QMovie *movie)QLabel 類的一個槽函數(shù),用于將一個 QMovie 對象設(shè)置為標簽的內(nèi)容。QMovie 通常用于播放動畫圖像,如 GIF 文件。當調(diào)用 setMovie() 函數(shù)時,之前標簽中顯示的任何內(nèi)容(文本、圖像等)都將被清除,并替換為指定的動畫。

  • 示例

    // 創(chuàng)建一個標簽和動畫對象
    QLabel *label = new QLabel(this);
    QMovie *movie = new QMovie("path/to/your/animation.gif");// 將動畫設(shè)置到標簽上
    label->setMovie(movie);// 啟動動畫播放
    movie->start();// 稍后,可能需要檢查當前標簽是否有動畫,或者獲取動畫對象
    QMovie *currentMovie = label->movie();if (currentMovie) {// 動畫存在,可以進行一些操作,比如暫停或刪除currentMovie->pause();
    } else {// 沒有動畫
    }
    

    image-20240715211933609

  • 注意事項:

    • 需要注意的是,QLabel 不會接管傳入的 QMovie 對象的所有權(quán)。這意味著 QMovie 對象的生命周期需要由其他地方管理,QLabel 只是使用這個對象來播放動畫,并不會在內(nèi)部刪除它。
    • 設(shè)置動畫后,如果之前有設(shè)置伙伴快捷鍵(通過 setBuddy()),則該快捷鍵將被自動禁用,因為動畫播放期間可能不適用快捷鍵。

3.setNum函數(shù)–設(shè)置標簽內(nèi)容為傳入數(shù)值的文本表示

void setNum(double num)
void setNum(int num)
  • 函數(shù)說明:

    用于將QLabel控件的內(nèi)容設(shè)置為傳入數(shù)值的文本表示。如果標簽之前有內(nèi)容,這些內(nèi)容將被新的文本表示替換。如果標簽控件有設(shè)置伙伴快捷鍵,這個快捷鍵將被禁用。

4.setPicture函數(shù)–設(shè)置標簽 的內(nèi)容為QPicture對象

void setPicture(const QPicture &picture)
  • 函數(shù)說明:

    這是 QLabel 類的一個槽函數(shù),用于將 QLabel 的內(nèi)容設(shè)置為一個 QPicture 對象。

  • 示例:

    // 創(chuàng)建一個標簽和一個 QPicture 對象
    QLabel *label = new QLabel(this);
    QPicture myPicture;// 假設(shè)我們通過某種方式填充了 myPicture 對象
    // ...// 將 QPicture 對象設(shè)置為標簽的內(nèi)容
    label->setPicture(myPicture);// 現(xiàn)在標簽將顯示 QPicture 對象中的繪圖內(nèi)容
    // 如果之前有設(shè)置伙伴快捷鍵,它將被禁用// 如果需要獲取當前標簽上的 QPicture 對象
    const QPicture *currentPicture = label->picture();// 檢查獲取的 QPicture 是否有效,并進行操作
    if (currentPicture) {// QPicture 是有效的,可以進行一些操作
    } else {// 標簽沒有設(shè)置 QPicture
    }
    
  • 注意事項:

    • 當調(diào)用 setPicture() 函數(shù)時,QLabel 之前顯示的任何內(nèi)容(無論是文本、圖像還是動畫)都會被清除,并替換為傳入的 QPicture 對象的內(nèi)容。

    • 如果 QLabel 之前設(shè)置了伙伴快捷鍵(通過 setBuddy() 函數(shù)),則在設(shè)置新的圖片內(nèi)容后,伙伴快捷鍵將被自動禁用。

5.setPixmap函數(shù)–設(shè)置標簽控件為QPixmap對象

void setPixmap(const QPixmap &)
  • 函數(shù)說明:

    用于將 QLabel 控件的內(nèi)容設(shè)置為一個 QPixmap 對象。

  • 示例:

    // 創(chuàng)建一個 QLabel 實例
    QLabel *label = new QLabel(this);// 創(chuàng)建 QPixmap 對象,例如從文件加載圖像
    QPixmap pixmap("path/to/your/image.png");// 檢查 QPixmap 是否有效
    if (!pixmap.isNull()) {// 將 QPixmap 設(shè)置為 QLabel 的內(nèi)容label->setPixmap(pixmap);// 現(xiàn)在 label 將顯示加載的圖像
    } else {// QPixmap 加載失敗,可以設(shè)置默認圖像或顯示錯誤信息label->setPixmap(QPixmap("path/to/default/image.png"));
    }// 如果需要調(diào)整圖像的顯示方式,可以使用 QLabel 的其他函數(shù)
    // 例如,設(shè)置圖像的縮放行為
    label->setScaledContents(true); // 縮放圖像以填充整個標簽// 如果需要居中顯示圖像
    label->setAlignment(Qt::AlignCenter);// 如果需要調(diào)整圖像與標簽邊緣的距離
    label->setMargin(10); // 設(shè)置邊距為 10 像素
    

    image-20240715214502384

  • 注意事項:

    • 當調(diào)用 setPixmap() 函數(shù)時,任何之前 QLabel 中顯示的內(nèi)容(文本、圖像、動畫等)都將被清除,并替換為新的 QPixmap 圖像。
    • 傳入的 QPixmap 對象可以是任何有效的圖像數(shù)據(jù),包括但不限于從文件加載的圖像、由應(yīng)用程序創(chuàng)建的圖像或由其他 QLabel 控件傳遞的圖像。
    • setPixmap() 函數(shù)通過引用傳遞 QPixmap 對象,這意味著它不會復(fù)制圖像數(shù)據(jù),從而節(jié)省了內(nèi)存和提高了效率。
    • 如果傳入的 QPixmap 是空的或包含無效的圖像數(shù)據(jù),QLabel 將不會顯示任何內(nèi)容。

6.setText函數(shù)–設(shè)置標簽控件的文本

void setText(const QString &)
  • 函數(shù)說明:

    setText()用于設(shè)置標簽控件的文本

  • 示例:

    // 創(chuàng)建一個 QLabel 實例
    QLabel *label = new QLabel(this);// 設(shè)置文本內(nèi)容
    label->setText("Welcome to <b>Qt</b>!");// 獲取當前文本
    QString currentText = label->text();
    qDebug() << "Label text:" << currentText;// 更改文本格式為富文本
    label->setTextFormat(Qt::RichText);
    label->setOpenExternalLinks(true);
    // 如果需要更新文本內(nèi)容
    label->setText("Updated text with <a href='http://www.baidu.com'>link</a>.");// 再次獲取文本
    currentText = label->text();
    qDebug() << "Updated label text:" << currentText;
    

    image-20240715220336986

    此時,點擊鏈接,會自動打開百度網(wǎng)頁。

  • 注意事項:

    • 通過 setText(const QString &) 可以設(shè)置 QLabel 的文本內(nèi)容,這會清除之前顯示的所有內(nèi)容。
    • 文本的解釋方式(純文本或富文本)取決于 setTextFormat() 函數(shù)設(shè)置的文本格式。Qt::AutoText 作為默認設(shè)置,意味著 QLabel 將嘗試自動檢測文本的格式。
    • 如果設(shè)置了伙伴(buddy),則在設(shè)置新文本時,伙伴的助記符鍵將根據(jù)新文本進行更新。

六、Signals(信號)

1.linkActivated信號

void linkActivated(const QString &link)
  • 說明:

    這是一個信號。當用戶點擊一個鏈接時,此信號被發(fā)出。傳遞給link參數(shù)的URL是被點擊的錨點所引用的鏈接

  • 參數(shù)說明:

    • const QString &link: 這是信號發(fā)出時傳遞的參數(shù),包含了被激活鏈接的文本,通常是一個URL。
  • 示例:

    QLabel *label = new QLabel(this);
    label->setText("Visit <a href='https://www.example.com'>Example</a> for more information.");
    label->setOpenExternalLinks(true);  // 允許打開外部鏈接// 連接信號到槽函數(shù)
    connect(label, &QLabel::linkActivated, this, &MyWidget::onLinkActivated);
    }//槽函數(shù)
    void Widget::onLinkActivated(const QString &link) {// 打開鏈接QDesktopServices::openUrl(QUrl(link));
    }
    
  • 注意事項:

    默認情況下,openExternalLinks 的值是 false。如果設(shè)置為 true,當用戶點擊鏈接時,QLabel 將自動使用 QDesktopServices::openUrl() 函數(shù)打開鏈接對應(yīng)的網(wǎng)頁或資源;如果設(shè)置為 true,發(fā)出 linkActivated() 信號,用戶可以連接這個信號來自定義鏈接被激活時的行為。

2.linkHovered信號

void linkHovered(const QString &link)
  • 說明:

    這是一個信號,當用戶將鼠標懸停在標簽中的鏈接上時發(fā)出。此信號允許開發(fā)者響應(yīng)用戶懸停在鏈接上的行為,例如顯示一個工具提示或執(zhí)行其他自定義操作。

  • 參數(shù)說明:

    • const QString &link: 信號發(fā)出時傳遞的參數(shù),包含了被懸停鏈接的文本,通常是一個URL。
  • 示例:

    QLabel *label = new QLabel(this);
    label->setText("Hover over <a href='https://www.example.com'>Example</a> to see a tooltip.");
    label->setOpenExternalLinks(true);  // 允許打開外部鏈接// 連接信號到槽函數(shù)
    connect(label, &QLabel::linkHovered, this, &Widget::onLinkHovered);void Widget::onLinkHovered(const QString &link)
    {// 顯示工具提示QToolTip::showText(QCursor::pos(), "Visit Example for more information.", this);
    }
    

    image-20240716131051101

七、Reimplemented Protected Functions(重載)

下面這些函數(shù)是QLabel子類中可以重寫的函數(shù)

1.changeEvent函數(shù)

virtual void changeEvent(QEvent *ev) override
  • 函數(shù)說明:

    它重寫了QFrame類的changeEvent函數(shù)。這個成員函數(shù)是Qt事件處理機制的一部分。當控件的某些屬性發(fā)生變化時,如啟用狀態(tài)、顯示狀態(tài)、文字顏色等,這個事件就會被發(fā)出。

  • 參數(shù)說明:

    • QEvent *ev: 函數(shù)的參數(shù)是一個指向QEvent對象的指針,它包含了事件的信息。

2.contextMenuEvent函數(shù)–右鍵點擊上下文菜單事件

virtual void contextMenuEvent(QContextMenuEvent *ev) override
  • 函數(shù)說明:

    它重寫了QWidget類的contextMenuEvent函數(shù)。這個成員函數(shù)用于響應(yīng)右鍵點擊事件,即當用戶在控件上點擊鼠標右鍵時,會觸發(fā)上下文菜單事件。

  • 參數(shù)說明:

    • QContextMenuEvent *ev: 函數(shù)的參數(shù)是一個指向QContextMenuEvent對象的指針,它包含了事件的信息,如鼠標的位置等。
  • 示例:在自定義的CustomLabel中重寫菜單事件,當點擊右擊CustomLabel時,出現(xiàn)上下文菜單

    //設(shè)置菜單策略
    this->setContextMenuPolicy(Qt::DefaultContextMenu);//初始化菜單
    m_pMenu = new QMenu(this);QAction *pAction1 = new QAction("查看");
    QAction *pAction2 = new QAction("排序方式");
    QAction *pAction3 = new QAction("刷新");
    m_pMenu->addAction(pAction1);
    m_pMenu->addAction(pAction2);
    m_pMenu->addAction(pAction3);connect(pAction1, &QAction::triggered, [=]{QMessageBox::information(this, "title", "查看");
    });//重寫上下文菜單事件--在鼠標點擊處執(zhí)行菜單
    void CustomLabel ::contextMenuEvent(QContextMenuEvent* event)
    {m_pMenu->exec(QCursor::pos());
    }
    

3.event函數(shù)–接收與處理所有事件

virtual bool event(QEvent *e) override
  • 函數(shù)說明:

    event函數(shù)是Qt事件處理機制中的一個非常底層的函數(shù),用于接收所有事件。這個函數(shù)重寫了QFrame類中的event函數(shù)。

  • 參數(shù)說明:

    QEvent *e: 函數(shù)的參數(shù)是一個指向QEvent對象的指針,它包含了事件的類型和相關(guān)信息。

  • 示例:

    bool CustomLabel::event(QEvent *e) {// 首先調(diào)用基類的event函數(shù)bool result = QLabel::event(e);// 檢查事件類型if (e->type() == QEvent::MouseButtonDblClick) {// 處理雙擊事件qDebug("Label was double-clicked.");return true; // 事件已處理,不再傳遞}// 如果事件未被處理,返回基類的處理結(jié)果return result;
    }
    

4.focusInEvent函數(shù)-獲得焦點事件

virtual void focusInEvent(QFocusEvent *ev) override
  • 函數(shù)說明:

    用于響應(yīng)獲得焦點的事件。當控件獲得輸入焦點時,這個事件會被觸發(fā)。它重寫了QWidget類的focusInEvent函數(shù)。

  • 參數(shù)說明:

    • QFocusEvent *ev: 函數(shù)的參數(shù)是一個指向QFocusEvent對象的指針,它包含了焦點事件的相關(guān)信息。
  • 示例:

    void CustomLabel::focusInEvent(QFocusEvent *ev) {// 調(diào)用基類的focusInEvent處理基本的焦點進入邏輯QLabel::focusInEvent(ev);// 可以在這里添加自定義的焦點進入時的處理qDebug("Label has gained focus.");// 例如,可以改變標簽的樣式或顯示效果來反映焦點狀態(tài)this->setStyleSheet("QLabel { border: 1px solid blue; }");
    }
    

5.focusNextPrevChild函數(shù)–焦點轉(zhuǎn)移事件

virtual bool focusNextPrevChild(bool next) override
  • 函數(shù)說明:

    用于處理在控件之間轉(zhuǎn)移焦點的請求。當用戶通過鍵盤(如Tab鍵)在控件間導(dǎo)航時,這個函數(shù)會被調(diào)用。它重寫了QWidget類的focusNextPrevChild函數(shù)。

  • 參數(shù)說明:

    • bool next: 函數(shù)的參數(shù),指示焦點是向前移動(true)還是向后移動(false)。
  • 返回值:

    • bool: 函數(shù)的返回類型是布爾值,表示是否成功轉(zhuǎn)移焦點。如果返回true,表示焦點轉(zhuǎn)移成功;如果返回false,表示沒有焦點可以轉(zhuǎn)移,焦點將停留在當前控件上。

6.focusOutEvent函數(shù)–失去焦點事件

virtual void focusOutEvent(QFocusEvent *ev) override
  • 函數(shù)說明:

    用于響應(yīng)失去焦點的事件。當控件的輸入焦點被另一個控件獲取時,這個事件會被觸發(fā)。它重寫了QWidget類的focusOutEvent函數(shù)。

  • 參數(shù)說明:

    • QFocusEvent *ev: 函數(shù)的參數(shù)是一個指向QFocusEvent對象的指針,它包含了焦點事件的相關(guān)信息。
  • 示例:

    void CustomLabel::focusOutEvent(QFocusEvent *ev) {// 調(diào)用基類的focusOutEvent處理基本的失去焦點邏輯QLabel::focusOutEvent(ev);// 可以在這里添加自定義的失去焦點時的處理qDebug("Label has lost focus.");// 例如,可以改變標簽的樣式或顯示效果來反映失去焦點狀態(tài)this->setStyleSheet(""); // 清除之前設(shè)置的樣式
    }
    

7.keyPressEvent函數(shù) – 鍵盤按鍵事件

virtual void keyPressEvent(QKeyEvent *ev) override
  • 函數(shù)說明:

    用于響應(yīng)鍵盤按鍵事件。當用戶在控件上按下鍵盤上的任意鍵時,這個事件會被觸發(fā)。它重寫了QWidget類的keyPressEvent函數(shù)。

  • 參數(shù)說明:

    • QKeyEvent *ev: 函數(shù)的參數(shù)是一個指向QKeyEvent對象的指針,它包含了鍵盤事件的詳細信息,如按下的鍵、是否同時按下了Shift或Ctrl等。
  • 示例:

    void CustomLabel::keyPressEvent(QKeyEvent *ev) override {// 調(diào)用基類的keyPressEvent來處理事件QLabel::keyPressEvent(ev);// 檢查按下的鍵switch (ev->key()) {case Qt::Key_Left:qDebug("Left arrow key was pressed.");break;case Qt::Key_Right:qDebug("Right arrow key was pressed.");break;// 可以根據(jù)需要添加更多的按鍵事件處理default:// 如果不是我們關(guān)心的鍵,調(diào)用基類的處理QWidget::keyPressEvent(ev);break;}
    }
    

8.mouseMoveEvent函數(shù)–鼠標移動事件

virtual void mouseMoveEvent(QMouseEvent *ev) override
  • 函數(shù)說明:

    用于響應(yīng)鼠標移動事件。當鼠標在控件區(qū)域內(nèi)移動時,不論是否按下了鼠標鍵,這個事件都會被觸發(fā)。它重寫了QWidget類的mouseMoveEvent函數(shù)。

  • 參數(shù)說明:

    • QMouseEvent *ev: 函數(shù)的參數(shù)是一個指向QMouseEvent對象的指針,它包含了鼠標事件的詳細信息,如鼠標位置、哪些鼠標鍵被按下、鼠標移動的距離等。

9.mousePressEvent函數(shù)–鼠標按鍵按下事件

virtual void mousePressEvent(QMouseEvent *ev) override
  • 函數(shù)說明:

    用于響應(yīng)鼠標按鍵按下的事件。當用戶在控件上按下鼠標鍵時,這個事件會被觸發(fā)。它重寫了QWidget類的mousePressEvent函數(shù)。

  • 參數(shù)說明:

    • QMouseEvent *ev: 函數(shù)的參數(shù)是一個指向QMouseEvent對象的指針,它包含了鼠標事件的詳細信息,如鼠標位置、哪個鼠標鍵被按下、點擊次數(shù)等。
  • 示例:

    void CustomLabel::mousePressEvent(QMouseEvent *ev) override {// 調(diào)用基類的mousePressEvent來處理基本的鼠標按下邏輯QLabel::mousePressEvent(ev);// 可以在這里添加自定義的鼠標按下時的處理qDebug() << "Mouse button was pressed at position:" << ev->pos().toString();// 例如,可以檢查按下的是哪個鼠標鍵if (ev->button() == Qt::LeftButton) {qDebug("Left mouse button was pressed.");// 可以在這里添加左鍵按下時的特定操作} else if (ev->button() == Qt::RightButton) {qDebug("Right mouse button was pressed.");// 可以在這里添加右鍵按下時的特定操作}
    }
    

10.mouseReleaseEvent函數(shù) --鼠標按鍵釋放事件

virtual void mouseReleaseEvent(QMouseEvent *ev) override
  • 函數(shù)說明:

    用于響應(yīng)鼠標按鍵釋放的事件。當用戶在控件上釋放鼠標鍵時,這個事件會被觸發(fā)。它重寫了 QWidget 類的 mouseReleaseEvent 函數(shù)。

  • 參數(shù)說明:

    • QMouseEvent *ev: 函數(shù)的參數(shù)是一個指向 QMouseEvent 對象的指針,它包含了鼠標事件的詳細信息,如鼠標位置、哪個鼠標鍵被釋放、是否有其他鼠標鍵同時被按下等。

11.paintEvent函數(shù) – 控件繪制事件

virtual void paintEvent(QPaintEvent *) override
  • 函數(shù)說明:

    用于自定義控件的繪制過程。當控件需要重繪自身時(例如,由于大小變化、內(nèi)容更新或從隱藏變?yōu)轱@示),這個事件會被觸發(fā)。它重寫了 QFrame 類的 paintEvent 函數(shù)。

  • 參數(shù)說明:

    • QPaintEvent *: 函數(shù)的參數(shù)是一個指向 QPaintEvent 對象的指針,它包含了繪制事件的相關(guān)信息,如需要更新的區(qū)域等。
http://www.risenshineclean.com/news/7061.html

相關(guān)文章:

  • 網(wǎng)站優(yōu)化比較好用的軟件win10優(yōu)化大師是官方的嗎
  • 東方財富網(wǎng)官方網(wǎng)站首頁免費網(wǎng)站建站頁面
  • 南充做網(wǎng)站公司百度熱線客服24小時
  • 福州網(wǎng)站設(shè)計大概多少錢大數(shù)據(jù)查詢
  • 視頻網(wǎng)站直播怎么做的國內(nèi)搜索引擎排行榜
  • 蘇州保潔公司多少錢一個平方百度seo自然優(yōu)化
  • 公眾號里的電影網(wǎng)站怎么做的浙江百度代理公司
  • 泉州最專業(yè)手機網(wǎng)站建設(shè)定制網(wǎng)站網(wǎng)絡(luò)推廣服務(wù)
  • wordpress圖片比例拉伸廣州百度推廣優(yōu)化排名
  • 成都html5網(wǎng)站建設(shè)市場運營和市場營銷的區(qū)別
  • 網(wǎng)站設(shè)計與網(wǎng)頁制作教程網(wǎng)站搜索引擎優(yōu)化技術(shù)
  • 購物網(wǎng)站建設(shè)包括哪些做電商需要學哪些基礎(chǔ)
  • 做的好的農(nóng)產(chǎn)品網(wǎng)站肇慶疫情最新情況
  • 公司做網(wǎng)站留言板seo綜合查詢什么意思
  • 像淘寶類別網(wǎng)站怎么做谷歌優(yōu)化是什么意思
  • 推薦一個可以做ppt的網(wǎng)站雅虎搜索引擎
  • 做環(huán)評需要關(guān)注哪些網(wǎng)站企業(yè)網(wǎng)站推廣渠道
  • 具有營銷型網(wǎng)站的公司網(wǎng)站域名在哪里查詢
  • 門戶網(wǎng)站建設(shè)招標文件軟件工程培訓(xùn)機構(gòu)哪家好
  • 哪個網(wǎng)站可以做申論真題資源搜索引擎搜索神器網(wǎng)
  • 陜西交通建設(shè)集團網(wǎng)站網(wǎng)站建設(shè)費用
  • 途牛企業(yè)網(wǎng)站建設(shè)百度推廣效果怎樣一天費用
  • 網(wǎng)站建設(shè)公司生存百度收錄提交入口
  • 貿(mào)易公司 網(wǎng)站 扶持搜索引擎優(yōu)化分析
  • 實業(yè)+東莞網(wǎng)站建設(shè)網(wǎng)絡(luò)seo推廣
  • 重慶網(wǎng)站建設(shè)制作設(shè)計企業(yè)站seo案例分析
  • 東平網(wǎng)站建設(shè)公司網(wǎng)頁制作教程
  • 查詢網(wǎng)站備案密碼是什么免費網(wǎng)站服務(wù)器安全軟件下載
  • 自己做網(wǎng)站賣東西怎么樣西安seo服務(wù)商
  • 招聘網(wǎng)站做招聘顧問百度風云榜小說排行榜