Qt实用技巧:自定义窗口标题栏
若該文為原創文章,未經允許不得轉載
原博主博客地址:https://blog.csdn.net/qq21497936
原博主博客導航:https://blog.csdn.net/qq21497936/article/details/102478062
本文章博客地址:https://blog.csdn.net/qq21497936/article/details/79223848
各位讀者,知識無窮而人力有窮,要么改需求,要么找專業人士,要么自己研究
紅胖子(紅模仿)的博文大全:開發技術集合(包含Qt實用技術、樹莓派、三維、OpenCV、OpenGL、ffmpeg、OSG、單片機、軟硬結合等等)持續更新中…(點擊傳送門)
Qt開發專欄:實用技巧(點擊傳送門)
?
需求
? ? ? ? 制作窗口時,需要自定義窗口標題欄,此時我們可使用與系統相關的API達到修改標題欄的需求,但是比較麻煩,筆者提供一種比較便捷的方法,但是最好不要使用菜單和工具欄(達不到想要的想過),或者自己重寫菜單欄和工具欄,布局到菜單欄的下面。
?
原理
? ? ? ? 將原窗口的標題欄隱藏,自己制作一個(注意左、上、右的margin要設為0)
?
Demo下載地址
? ? ? ? http://download.csdn.net/download/qq21497936/10234989
?
關于切圖
? ? ? ? 若不會切圖,請查看《PS實用技巧:用原始圖片制作顯示(正常狀態)、鼠標懸浮(hover)、鼠標點擊(pressed)的方法》:
? ? ? ??http://blog.csdn.net/qq21497936/article/details/79226258
?
實現Demo步驟
步驟一:創建一個基本的GUI程序
步驟二:設置標題欄為 Qt::FramelessWindowHint
步驟三:使用QHBoxLayout,布局好后(最大最小寬度都設為24,表標寬度隨意),將QHBoxLayout提升為QWidget
步驟四:添加圖片效果,準備好圖片,創建資源文件并加載
步驟五:添加樣式,給Mainwindow設置sheetstyle
?
?
/* 全局 */ *{ font: 18px Tahoma, Geneva, sans-serif; }/* 標題欄 */ horizontalWidget/* 軟件圖標 */ QLabel#label_icon { border-image: url(:/images/images/24x24.ico); }/* 最小化按鈕 */ QPushButton#pushButton_min { border-image: url(:/images/images/minus.png); } QPushButton#pushButton_min:hover { border-image: url(:/images/images/minus_hover.png); } QPushButton#pushButton_min:pressed { border-image: url(:/images/images/minus_pressed.png); }/* 最大化/恢復按鈕 */ QPushButton#pushButton_max { border-image: url(:/images/images/maximize.png); } QPushButton#pushButton_max:hover { border-image: url(:/images/images/maximize_hover.png);} QPushButton#pushButton_max:pressed { border-image: url(:/images/images/maximize_pressed.png);} QPushButton#pushButton_max:checked { border-image: url(:/images/images/restore.png);} QPushButton#pushButton_max:checked:hover { border-image: url(:/images/images/restore_hover.png);} QPushButton#pushButton_max:checked:pressed { border-image: url(:/images/images/restore_pressed.png);}/* 退出按鈕 */ QPushButton#pushButton_exit { border-image: url(:/images/images/close.png);} QPushButton#pushButton_exit:hover { border-image: url(:/images/images/close_hover.png);} QPushButton#pushButton_exit:pressed { border-image: url(:/images/images/close_pressed.png);}?
在QtDesigner設計器中去掉工具欄,最終效果如圖(沒有實現按鈕功能、單擊可拽拖、雙擊切換最大化/正常)
?
原博主博客地址:https://blog.csdn.net/qq21497936
原博主博客導航:https://blog.csdn.net/qq21497936/article/details/102478062
本文章博客地址:https://blog.csdn.net/qq21497936/article/details/79223848
總結
以上是生活随笔為你收集整理的Qt实用技巧:自定义窗口标题栏的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux命令之more命令
- 下一篇: 总是腰疼背痛 竟是“穿错鞋”惹的祸