Qt之自定義QLineEdit右鍵菜單

1、QLineEdit說明

    QLineEdit是單行文本框,不一樣於QTextEdit,他只能顯示一行文本,一般能夠用做用戶名、密碼和搜索框等。它還提供了一些列的信號和槽,方便咱們使用,有興趣的小夥伴能夠直接去看幫助文檔,我在這裏就很少廢話了。可是呢,我在這裏卻要單獨的說幾個接口,由於他們很容易被人忽略,可是卻又是一個很好用、能夠常常用到的功能。html

  • addAction(QAction *action, ActionPosition position):能夠在編輯框的開始或者末尾添加一個action,方便咱們操做,一個完美的搜索框頓時出現。
  • setEchoMode(EchoMode):文本顯示模式,經過這個接口能夠設置成爲密碼框,其中的參數意思一次爲:正常、什麼都不顯示、密碼、剛輸入時顯示字符緊接着變成密碼狀態
  • setCompleter(QCompleter *c):看這個單詞的意思:完成。顧名思義這個藉口能夠設置文編輯框編輯時自動補齊的功能,相似於百度輸入框的自動提示功能,若是想要了解細節功能請自行百度,或者移步QCompleter自動補全
  • setSelection(int start, int length):設置是否能選中文本
  • setValidator(const QValidator *v):內容驗證器

圖1 addAction使用截圖函數

    如圖1所示,是addAction使用截圖,右側按鈕圖標是我使用style()->standardPixmap(QStyle::SP_TitleBarMinButton)添加的,post

2、右鍵菜單定製

    本文描述的3種右鍵菜單定製,也一樣適用於其餘繼承自QWidget的類。url

首先咱們看下圖2所示,這是qt幫助文檔中的一個枚舉,這個枚舉對於製做右鍵菜單有相當重要的做用,相信大多數的小夥伴確定都見過,也都明白是什麼意思。spa

圖2 ContextMenuPolicy枚舉code

其實qt的命名仍是比較合理的,從英文單詞上咱們大概就能知道這個宏的做用,下面我來一次說下這個幾個宏的含義。一、沒有右鍵菜單;二、組織右鍵菜單彈出,不一樣於第一個,該宏還阻止事件傳遞給父窗口;三、缺省的值,右鍵菜單在窗口類的contextMenuEvent函數中處理;四、使用窗口的action來彈出菜單,這個對於table和tree來講比較方便;五、右鍵事件在customContextMenuRequested對應的槽函數中實現,固然了槽須要咱們本身寫。htm

方法1:blog

實現customContextMenuRequested信號的接口,並調用setContextMenuPolicy設置Qt::CustomContextMenu參數,使用connect連接,具體示例我就不寫了。繼承

方法2:接口

設置contextMenuPolicy爲Qt::DefaultContextMenu,這個也是默認值,而後實現QWidget類的contextMenuEvent接口,示例代碼以下:

1   void MyTextEdit::contextMenuEvent(QContextMenuEvent *event)
2   {
3       QMenu *menu = createStandardContextMenu();//默認的標準右鍵菜單,若是不須要刻意徹底本身實現
4       menu->addAction(tr("My Menu Item"));
5       //...
6       menu->exec(event->globalPos());
7       delete menu;
8   }

方法3:

重寫父類的mousePressEvent函數,處理鼠標右鍵事件,示例代碼相似於:

1 void DragList::mousePressEvent(QMouseEvent *event)
2 {
3     if (event->button() == Qt::LeftButton)
4     {
5         startPos = event->pos();
6         dragItem = itemAt(event->pos());
7     }
8     QListWidget::mousePressEvent(event);
9 }

上面的代碼我只爲了說明問題,沒有任何意義。

看到這兒了,基本的右鍵菜單定製我就差很少描述完了,方法1和方法2都是使用傳統的方式,方法3有些取巧。

3、相關文章

  1. Qt之默認菜單語言設置
  2. Qt之彈出式菜單陰影
  3. Qt之自定義檢索框
  4. QTextEdit之最大字符數

 

若是您以爲文章不錯,不妨給個 打賞,寫做不易,感謝各位的支持。您的支持是我最大的動力,謝謝!!! 

 

  


很重要--轉載聲明

  1. 本站文章無特別說明,皆爲原創,版權全部,轉載時請用連接的方式,給出原文出處。同時寫上原做者:朝十晚八 or Twowords
  2. 如要轉載,請原文轉載,如在轉載時修改本文,請事先告知,謝絕在轉載時經過修改本文達到有利於轉載者的目的。 

相關文章
相關標籤/搜索