QT實現類似於網頁step 選單效果
轉自:http://blog.csdn.net/work4blue/article/details/8788295
很多分類資訊網站用step menu選單來提示使用者按步驟輸入。如58同城的廣告。
在網頁上用CSS式樣實現很簡單,這個裡有人公佈實現 http://codylindley.com/blogstuff/css/stepmenu/
我想在QT上實現類似效果,即帶箭頭的選單,最初想到方案是
1.按QML格式把CSS改寫,但是一是對QML用得不多,二是感覺工作量不少,這個方案放棄了。
2.第二個方案是在同一個label裡放入一個完整選單,用根據滑鼠點選區域來判斷點了哪一塊區域,這個工程量更大,放棄
3.使用不規則按鈕來實現帶箭頭按鈕。這好象也要實現不少,關鍵不規則按鈕中無圖象區域點選也要響應,兩個按鈕拼在一起,這會造成誤點選。
最後實現是一個簡單方案,即用QPushButton和QLabel拼成一個完整選單。
每個選單項仍然由普通QPushButton來實現,但是兩個選單之間箭頭符號,由一個單獨圖片來顯示。它不響應點選,只是為了美觀。
假設有四個步驟,每一步有三種狀態(紅,綠,灰表示),兩個按鈕之間的箭頭圖片按組合有6種,排除不可能出現的情況只需4種即可。
這個用7張圖片即可。
四步,共有四個按鈕加上三個間隔,水平排列拼接即可,不同狀態換不同圖片即可。
最終實現效果如下,外觀上跟網頁差不多
注意一些細節
QPushButton的背景是由Style表中背景圖象的的 background-image: url(:/comm/image/btn2.png);,使用flat風格不顯示邊框
但是上下總有一個畫素的邊線去不掉,所以為了和label上的影象對齊,Button的高度要+2. 這是72px,
QLabel的影象是由pixmap中指定圖片,使用flat風格不顯示邊框,高度是70px.
QPushButton的字型的顏色是修改palette 中buttonText的顏色修改的。
這幾個控制元件不能使用水平佈局,否則兩個控制元件之間總會有一個邊界線。
具體實現參見附件程式碼:http://download.csdn.net/detail/work4blue/5246569
相關文章
- 實現類似IE的列印網頁功能 (轉)網頁
- 網頁點選實現下載效果網頁
- Flutter 實現類似美團外賣店鋪頁面滑動效果Flutter
- 在鴻蒙中實現類似瀑布流效果鴻蒙
- JS實現 類似圖片3D效果JS3D
- select下拉選單實現分類級聯效果
- 討論一下基於網頁聊天的實現(類似gmail中的聊天)網頁AI
- C/C++ Qt Tree與Tab元件實現分頁選單C++QT元件
- Flutter 實現類似TabPicker省市區選擇Flutter
- Android中使用RecyclerView + SnapHelper實現類似ViewPager效果AndroidViewpager
- 利用Register protocol實現網頁呼叫桌面程式(類似迅雷、QQ等)Protocol網頁
- 直播系統中網頁類似app頁面切換動畫的實現方式網頁APP動畫
- C++ Qt開發:Tab與Tree元件實現分頁選單C++QT元件
- 簡單實現類似Spring的Aop原理實現Spring
- 如何在 web 頁面中實現類似 excel 固定表頭 / 標題行的效果?WebExcel
- 類似微信首頁彈性滾動和慣性滾動效果的實現——OverScroll
- iOS 類知乎”分頁”效果的實現?iOS
- Laravel 小技巧 - 讓路由實現類似 Model::query 的效果Laravel路由
- 絕對精彩:在網頁裡做類似window右鍵的彈出式選單 (轉)網頁
- [譯]如何在 iOS 上實現類似 Airbnb 中的可展開式選單iOSAI
- 選擇下拉選單項實現跳轉效果
- 用Javascript實現選單摺疊效果JavaScript
- Blazor如何實現類似於微信的Tab切換?Blazor
- JS實現類似於微博秀的GitHub掛件JSGithub
- GetX 實現類似微信轉發搜尋多選好友
- iOS 類似美團外賣 app 兩個 tableView 聯動效果實現iOSAPPView
- 類似 MSDN 左邊導航樹效果的實現! [JavaScript + ASP] (轉)JavaScript
- JS時間軸效果(類似於qq空間時間軸效果)JS
- jQuery類似電影院座位選取效果程式碼例項jQuery
- PHP - 實現類似於百度的實時搜尋PHP
- JS實現網頁換膚功能效果JS網頁
- 純css實現固定在網頁底部選單導航CSS網頁
- 分頁實現前臺後臺不同效果,分頁類引入
- 用 hyperf websocket 實現,類似 qq 單機登入功能Web
- 類似dreamweaver在VSCode實現網頁製作的靜態CMS:Front MatterVSCode網頁
- FullPage.js – 輕鬆實現全屏滾動(單頁網站)效果JS網站
- (十)如果實現滑動展示選單效果
- TornadoFx實現側邊欄選單效果