天天看點

Qt 圓角按鈕,面版自動布局

一、前言

  在部分界面開發中,有時需要動态添加控件或按鈕到面闆中,在不需要時又需要删除該控件,故模仿視訊開發中的設定屏蔽詞,通過自己繪制的按鈕與排布面闆控件實作。

  實作效果如下:

  

  說明:

  1、輸入框可設定背景色、圓角角度、顔色高亮等

  2、采用圓角輸入框輸入字元,回車或點選“添加”可觸發信号,擷取輸入字元串

  3、字元以圓角按鈕控件顯示,點選“X”可删除該按鈕

  4、面版自動排布,删除中間的圓角按鈕,後續的會往前移

  5、添加的屏蔽詞都放在後面,已有屏蔽詞會提示已存在,删除屏蔽詞後可再次添加

二、實作過程

  1、運作環境Qt5.5 VS2013

  2、制作圓角按鈕

  1)繼承QWidget,封裝KeyButton控件

Qt 圓角按鈕,面版自動布局
Qt 圓角按鈕,面版自動布局

圓角按鈕

  2)重寫paintEvent事件,繪制按鈕圓角按鈕,包括字元

Qt 圓角按鈕,面版自動布局
Qt 圓角按鈕,面版自動布局

繪制事件

  3)繼承resizeEvent事件,計算“X”的繪制位置

Qt 圓角按鈕,面版自動布局
Qt 圓角按鈕,面版自動布局

繪制位置

  4)繼承mouseReleaseEvent事件,使用者點選“X”後觸發删除信号

Qt 圓角按鈕,面版自動布局
Qt 圓角按鈕,面版自動布局

信号觸發

  3、面闆自動布局

  1)繼承QWidget,自定義PanelWidget控件

Qt 圓角按鈕,面版自動布局
Qt 圓角按鈕,面版自動布局

面版類

  2)考慮增加的控件可能比較多,采用QScrollArea控件(存儲不下時可左右拉動顯示)

Qt 圓角按鈕,面版自動布局
Qt 圓角按鈕,面版自動布局

建立面闆

  3)通過setWidget和setWidgets,更新面闆内的控件

Qt 圓角按鈕,面版自動布局
Qt 圓角按鈕,面版自動布局

面闆更新

  4)更新面版内容後,通過QGridLayout更新控件的布局

Qt 圓角按鈕,面版自動布局
Qt 圓角按鈕,面版自動布局

面闆布局

繼續閱讀