QT學習筆記11常用控制元件
Qt為我們應用程式介面開發提供的一系列的控制元件,下面我們介紹兩種最常用的兩種,所有控制元件的使用方法我們都可以通過幫助文件獲取。
1 QLabel控制元件使用
QLabel是我們最常用的控制元件之一,其功能很強大,我們可以用來顯示文字,圖片和動畫等。
顯示文字 (普通文字、html)
通過QLabel類的setText函式設定顯示的內容:
void setText(const QString &)
-
可以顯示普通文字字串
QLable *label = new QLable;
label->setText("Hello, World!");
-
可以顯示HTML格式的字串
比如顯示一個連結:
QLabel * label = new QLabel(this);
label ->setText("Hello, World");
label ->setText("<h1><a href=\"https://www.baidu.com\">
百度一下</a></h1>");
label ->setOpenExternalLinks(true);
其中setOpenExternalLinks()函式是用來設定使用者點選連結之後是否自動開啟連結,如果引數指定為true則會自動開啟,如果設定為false,想要開啟連結只能通過捕捉linkActivated()訊號,在自定義的槽函式中使用QDesktopServices::openUrl()開啟連結,該函式引數預設值為false
QLabel * label = new QLabel(this);
label ->setText("Hello, World");
label ->setText("<h1><a href=\"https://www.baidu.com\">
百度一下</a></h1>");
// label->setOpenExternalLinks(true);
connect(label, &QLabel::linkActivated,
this, &MyWidget::slotOpenUrl);
//槽函式
void MyWidget::slotOpenUrl(const QString &link)
{
QDesktopServices::openUrl(QUrl(link));
}
顯示圖片
可以使用QLabel的成員函式setPixmap設定圖片
void setPixmap(const QPixmap &)
首先定義QPixmap物件
QPixmap pixmap;
然後載入圖片
pixmap.load(":/Image/boat.jpg");
最後將圖片設定到QLabel中
QLabel *label = new QLabel;
label.setPixmap(pixmap);
顯示動畫
可以使用QLabel 的成員函式setMovie載入動畫,可以播放gif格式的檔案
void setMovie(QMovie * movie)
首先定義QMovied物件,並初始化:
QMovie *movie = new QMovie(":/Mario.gif");
播放載入的動畫:
movie->start();
將動畫設定到QLabel中:
QLabel *label = new QLabel;
label->setMovie(movie);
2 QLineEdit
Qt提供的單行文字編輯框。
設定/獲取內容
-
獲取編輯框內容使用text(),函式宣告如下:
QString text() const
-
設定編輯框內容
void setText(const QString &)
設定顯示模式
使用QLineEdit類的setEchoMode () 函式設定文字的顯示模式,函式宣告:
void setEchoMode(EchoMode mode)
EchoMode是一個列舉型別,一共定義了四種顯示模式:
- QLineEdit::Normal 模式顯示方式,按照輸入的內容顯示。
- QLineEdit::NoEcho 不顯示任何內容,此模式下無法看到使用者的輸入。
- QLineEdit::Password 密碼模式,輸入的字元會根據平臺轉換為特殊字元。
- QLineEdit::PasswordEchoOnEdit 編輯時顯示字元否則顯示字元作為密碼。
另外,我們再使用QLineEdit顯示文字的時候,希望在左側留出一段空白的區域,那麼,就可以使用QLineEdit給我們提供的setTextMargins函式:
void setTextMargins(int left, int top, int right, int bottom)
用此函式可以指定顯示的文字與輸入框上下左右邊界的間隔的畫素數。
設定輸入提示
如果我們想實現一個與百度的搜尋框類似的功能:輸入一個或幾個字元,下邊會列出幾個跟輸入的字元相匹配的字串,QLineEdit要實現這樣的功能可以使用該類的成員函式setComleter()函式來實現:
void setCompleter(QCompleter * c)
建立QCompleter物件,並初始化
QStringList tipList;
tipList<< "Hello" << "how are you" << "Haha" << "oh, hello";
// 不區分大小寫
completer->setCaseSensitivity(Qt::CaseInsensitive);
QCompleter *completer = new QCompleter(tipList, this);
QCompleter類的setCaseSensitivity()函式可以設定是否區分大小寫,它的引數是一個列舉型別:
- Qt::CaseInsensitive 不區分大小寫
- Qt::CaseSensitive 區分大小寫
如果不設定該屬性,預設匹配字串時是區分大小寫的。
另外我們還可以設定字串其中某一部分匹配,此功能可通過QCompleter類的setFilterMode函式來實現,函式宣告如下:
void setFilterMode(Qt::MatchFlags filterMode)
其引數為Qt定義的巨集,有多重型別,具體可參考Qt幫助穩定,要實現我們上邊提到的功能,引數可以使用 Qt::MatchContains:
completer->setFilterMode(Qt::MatchContains);
屬性設定完成之後,將QCompleter物件設定到QLineEdit中:
QLineEdit *edit = new QLineEdit(this);
edit->setCompleter(completer);
Qt中控制元件的使用方法可參考Qt提供的幫助文件。