最近一直在研究迅雷9的介面,花了點時間做了幾個通用的提示資訊框,整體風格與迅雷9介面相同。支援模態和非模態兩種模式視窗。提示框效果見下圖。
我們可以根據設定不同的引數來設定提示框標題、顯示內容、顯示圖示、下方按鈕個數,可以設定為輸入框,也可以設定為模態/非模態對話方塊,實現了自定義的qmessagebox。目前實現了提示框基本功能,後續將繼續拓展更多功能。小夥伴們可以根據需要自定義其他功能,下面直接上**。
後續更改了一下樣式,修改為qq風格的提示視窗,詳情見 qt 之 自定義提示資訊框—qq風格 。
看**之前需要看一下qt 之 自定義視窗標題欄這一篇文章,因為這裡用到了這篇文章中寫到的自定義標題欄。
如果需要了解如何實現視窗的模態與非模態對話方塊可以看一下qt 之 模態與非模態視窗的介紹及 實現qdialog的exec()方法 這一篇文章。
這裡新建任務視窗類mymessagebox 繼承了basewindow類,所以省去了一些**實現(主要包括頂部標題欄、滑鼠按住標題欄進行拖動,視窗背景色等 ),有需要的小夥伴可以去看一下這一篇文章。
#include
#include "ui_mymessagebox.h"
#include "basewindow.h"
enum chosseresult
;enum messagetype
;enum messagebuttontype
;class mymessagebox : public basewindow
;
#include "mymessagebox.h"
#include
#include
mymessagebox::mymessagebox(qwidget *parent)
: basewindow(parent)
, m_eventloop(null)
, m_chooseresult(id_cancel)
mymessagebox::~mymessagebox()
void mymessagebox::initwindow()
// 初始化標題欄;
void mymessagebox::inittitlebar()
void mymessagebox::paintevent(qpaintevent *event)
void mymessagebox::setwindowtitle(qstring title , int titlefontsize)
void mymessagebox::setcontenttext(qstring contenttext)
void mymessagebox::setmessagetype(messagetype messagetype)
}void mymessagebox::setbuttontype(messagebuttontype buttontype)
break;
case button_ok_and_cancel:
break;
default:
break;
}}void mymessagebox::setmessagecontent(qstring messagecontent)
// 顯示提示框
// ismodelwindow 引數設定提示框是否是模態
**其實很簡單,這裡只是實現了基本功能(根據引數設定不同樣式的提示框),更多可以參考qt的qmessagebox,在後續會增加更多功能實現,敬請期待哈 o(∩_∩)o !
qt 之 自定義提示資訊框—qq風格
qt 之 模態與非模態視窗的介紹及 實現qdialog的exec()方法
qt 之 自定義視窗標題欄
qt 之 自定義提示資訊框—qq、迅雷風格 (包含了qq和迅雷兩種風格的提示框)
qt 之自定義 搜尋框
當然,這些對於qt實現來說毫無壓力,只要思路清晰,分分鐘搞定。列舉 qlineedit actionposition常量值 描述qlineedit leadingposition 0當使用布局方向qt lefttoright時,部件顯示在文字左側,使用qt righttoleft則顯示在右側。qli...
Qt之自定義搜尋框
當然,這些對於qt實現來說毫無壓力,只要思路清晰,分分鐘搞定。列舉 qlineedit actionposition常量值 描述qlineedit leadingposition 0當使用布局方向qt lefttoright時,部件顯示在文字左側,使用qt righttoleft則顯示在右側。qli...
Qt之自定義搜尋框
當然,這些對於qt實現來說毫無壓力,只要思路清晰,分分鐘搞定。實現細節需要如下步驟 組合實現,輸入框 按鈕 事件關聯 獲取輸入文字,進行文字搜尋 為了更人性 易用,這裡有一些細節需要注意 輸入框的文字不能處於按鈕之下 輸入框無文字時必須給與友好性提示 按鈕無文字描述,一般需要給予tooltip提示 ...