1. 程式人生 > >【Qt】Qt之自定義搜尋框【轉】

【Qt】Qt之自定義搜尋框【轉】

簡述

關於搜尋框,大家都經常接觸。例如:瀏覽器搜尋、Windows資源管理器搜尋等。

這裡寫圖片描述

這裡寫圖片描述

當然,這些對於Qt實現來說毫無壓力,只要思路清晰,分分鐘搞定。

效果

這裡寫圖片描述

細節分析

實現細節需要如下步驟:

  1. 組合實現,輸入框+按鈕
  2. 事件關聯
  3. 獲取輸入文字,進行文字搜尋

為了更人性、易用,這裡有一些細節需要注意:

  1. 輸入框的文字不能處於按鈕之下
  2. 輸入框無文字時必須給與友好性提示
  3. 按鈕無文字描述,一般需要給予ToolTip提示
  4. 按鈕樣式-正常、滑過、按下,以及滑鼠滑過滑鼠樣式手型,

這些都想清楚了,我們就能快速實現一個搜尋框了。

Coding

搜尋框實現

m_pSearchLineEdit = new QLineEdit();
QPushButton *pSearchButton = new QPushButton(this);

pSearchButton->setCursor(Qt::PointingHandCursor);
pSearchButton->setFixedSize(22, 22);
pSearchButton->setToolTip(QStringLiteral("搜尋"));
pSearchButton->setStyleSheet("QPushButton{border-image:url(:/images/icon_search_normal); background:transparent;} \
                                     QPushButton:hover{border-image:url(:/images/icon_search_hover)} \
                                     QPushButton:pressed{border-image:url(:/images/icon_search_press)}"
); //防止文字框輸入內容位於按鈕之下 QMargins margins = m_pSearchLineEdit->textMargins(); m_pSearchLineEdit->setTextMargins(margins.left(), margins.top(), pSearchButton->width(), margins.bottom()); m_pSearchLineEdit->setPlaceholderText(QStringLiteral("請輸入搜尋內容")); QHBoxLayout *pSearchLayout = new QHBoxLayout(); pSearchLayout->
addStretch(); pSearchLayout->addWidget(pSearchButton); pSearchLayout->setSpacing(0); pSearchLayout->setContentsMargins(0, 0, 0, 0); m_pSearchLineEdit->setLayout(pSearchLayout); connect(pSearchButton, SIGNAL(clicked(bool)), this, SLOT(search()));

槽函式實現

void Widget::search()
{
    QString strText = m_pSearchLineEdit->text();
    if (!strText.isEmpty())
    {
        QMessageBox::information(this, QStringLiteral("搜尋"), QStringLiteral("搜尋內容為%1").arg(strText));
    }
}

原始碼下載

相關推薦

QtQt定義搜尋

簡述 關於搜尋框,大家都經常接觸。例如:瀏覽器搜尋、Windows資源管理器搜尋等。 當然,這些對於Qt實現來說毫無壓力,只要思路清晰,分分鐘搞定。 簡述 效果 細節分析 原始碼下載 效果 細節分析 實現細節需要如下步驟: 組合實現,輸入框+

Qt-定義搜尋

1.建立輸入框 QLineEdit* text = new QLineEdit(this); text->setGeometry(50,80,200,25); text->setObjectName(QString("text")); 2.建

QT-模型檢視定義委託

檢視委託(Delegate)簡介 由於模型負責組織資料,而檢視負責顯示資料,所以當用戶想修改顯示的資料時,就要通過檢視中的委託來完成 檢視委託類似於傳統的MVC設計模式裡的Controller(控制器)角色 Model(模型) - 負責資料組織 View(檢視)&n

BLE-CC2640CC2640定義週期事件

本篇博文最後修改時間:2017年06月02日,00:29。 一、簡介 本文以SimpleBLEPeripheral工程為例,介紹如何使用系統提供的定時器執行一個自定義的週期事件。 二、實驗平臺 協議棧版本:ble_cc26xx_2_01_00_44423

Android定義裝置管理

需求:控制手機的攝像頭和錄音全部禁用~     這篇文章使用android提供的裝置管理器類DeviceAdminReceiver ,來實現禁用手機攝像頭的功能,還能夠改變密碼,鎖屏,重啟等功能,具體功能請去查API,如果我沒記錯的話有5千多行... ... 但是這篇文章主

Android定義View——定義搜尋(SearchView) 非常實用的控制元件

好多東西寫起來太麻煩了,而且我在最開始用的也不是自己寫的,所以找了一個非常棒的測試了一下.  轉載的 在 Android開發中,當系統資料項比較多時,常常會在app新增搜尋功能,方便使用者能快速獲得需要的資料。搜尋欄對於我們並不陌生,在許多app都能見到它,比如豌

android 定義搜尋

1.編寫佈局 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+

QtQt定義介面(實現無邊框、可移動)

簡述 UI設計是指對軟體的人機互動、操作邏輯、介面美觀的整體設計。好的UI設計不僅是讓軟體變得有個性、有品位,還要讓軟體的操作變得舒適簡單、自由,充分體現軟體的定位和特點。 愛美之心人皆有之。其實軟體介面就像工業造型一樣,是產品的重要賣點。一個產品擁有美觀的介面會給人帶來舒適的視覺享受,拉近人與產品的

QtQt定義介面(窗體縮放-跨平臺終極版)

簡述 通過上一節內容,我們實現了窗體的縮放,功能很不錯,但是很遺憾-不支援跨平臺!如果對於多平臺來說,這是一個硬傷,所以,我們急需要一個能夠支援跨平臺的實現方案。 在網上看到過很多不同的實現方式,多多少少會存在一些問題-要麼融合度太高、要麼不能很好地進行移動、縮放。基於前人的分享與總結,最後,我花了很

QtQt定義介面(右下角冒泡)

簡述 網頁右下角上經常會出現一些提示性的資訊,桌面軟體中也比較常見,類似360新聞、QQ訊息提示一樣! 這種功能用動畫實現起來很簡單,這節我們暫時使用定時器來實現,後面章節會對動畫框架進行詳細講解。 下面我們來實現一個右下角冒泡的功能。 簡述 效果 實現原理 實現 效果

QtQt定義介面(QMessageBox)

簡述 通過前幾節的自定義窗體的學習,我們可以很容易的寫出一套屬於自己風格的介面框架,通用於各種窗體,比如:QWidget、QDialog、QMainWindow。 大多數窗體的實現都是採用控制元件堆積來完成的,只要思路清晰,再複雜的介面實現起來都遊刃有餘。下面我來列舉一個由QMessageBox擴充套

QtQt定義介面(窗體縮放)

簡述 通過前兩節內容,我們實現了自定義窗體的移動,以及自定義標題欄-用來顯示窗體的圖示、標題,以及控制窗體最小化、最大化、關閉。 在這之後,我們還缺少窗體的縮放-當滑鼠移動到窗體的邊框-左、上、右、下、左上角、左下角、右上角、右下角時候,滑鼠變為相應的樣式,並且窗體可以隨著滑鼠拖動而進行放大、縮小。

QtQt定義介面(新增定義標題欄)

簡述 通過上節內容,我們實現了自定義窗體的移動,但是我們缺少一個標題欄來顯示窗體的圖示、標題,以及控制窗體最小化、最大化、關閉的按鈕。 自定義標題欄後,所有的控制元件我們都可以定製,比如:在標題欄中新增換膚、設定按鈕以及其他控制元件。 簡述 效果 自定義標題欄 實現 介面說明

第五篇Qt學習與使用---定義的圖片輪播類(滾動播放圖片)

1、目標 編寫一個類,可以展示幾張圖片。類似於現在流行的視訊播放器的首頁中出現的滾動展示的控制元件。   2、 具體要求 (1)一次性展示三張圖片,左中右。中間的圖片至於頂部,旁邊的圖片被覆蓋,只露出一部分。 (2) 切換圖片的時候,呈現動態效果,需要有一個移動的過程。

Android定義View實戰定義超簡單SearchView搜尋

package cn.bluemobi.dylan.searchview; import android.content.Context; import android.text.Editable; import android.text.TextWatcher; import android.util.A

PyQt5-Qt DesignerpyqtSignal()-高階定義訊號與槽

PyQt 5訊號與槽的幾種高階玩法 參考:http://www.broadview.com.cn/article/824 from PyQt5.QtCore import QObject , pyqtSignal class CustSignal(QObject): #宣告無引數的訊號

Qt定義搜索——QLineEdit裏增加一個Layout,還不影響正常輸入文字(好像是一種比較通吃的方法)

too 步驟 set box 文本 csdn sub void 鼠標 簡述 關於搜索框,大家都經常接觸。例如:瀏覽器搜索、Windows資源管理器搜索等。 當然,這些對於Qt實現來說毫無壓力,只要思路清晰,分分鐘搞定。 方案一:調用QLineEdit現

Spring MVC系列(五)定義數據綁定---HandlerMethodArgumentResolver

開閉 src pat 獲取參數 mvc .net 定義 開閉原則 淺析 介紹 前面幾節我們介紹了Spring MVC的幾種常見的數據綁定的方法,可以靈活地獲取用戶請求中的參數,例如@PathVariable,@ModelAttribute,@RequestPar

Android定義View實戰定義評價打分控制元件RatingBar,可以定義星星大小和間距

在Android開發中,我們經常會用到對商家或者商品的評價,運用星星進行打分。然而在Android系統中自帶的打分控制元件,RatingBar特別不好用,間距和大小無法改變。所以,我就自定義了一個特別好用的打分控制元件。在專案中可以直接使用,特別簡

Qt定義屬性Q_PROPERTY

  相當於定義了某一個數據屬性,此資料可讀性,可寫性、復位值、訊號關聯等內容     Qt提供了一個絕妙的屬性系統。跟那些由編譯器提供的屬性差不多。然而,作為一個獨立於編譯器和平臺的庫,Qt不依賴於非標準的編譯特性,比如__property 或[pro