一、前言
在部分界面開發中,有時需要動态添加控件或按鈕到面闆中,在不需要時又需要删除該控件,故模仿視訊開發中的設定屏蔽詞,通過自己繪制的按鈕與排布面闆控件實作。
實作效果如下:
說明:
1、輸入框可設定背景色、圓角角度、顔色高亮等
2、采用圓角輸入框輸入字元,回車或點選“添加”可觸發信号,擷取輸入字元串
3、字元以圓角按鈕控件顯示,點選“X”可删除該按鈕
4、面版自動排布,删除中間的圓角按鈕,後續的會往前移
5、添加的屏蔽詞都放在後面,已有屏蔽詞會提示已存在,删除屏蔽詞後可再次添加
二、實作過程
1、運作環境Qt5.5 VS2013
2、制作圓角按鈕
1)繼承QWidget,封裝KeyButton控件

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

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

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

信号觸發
3、面闆自動布局
1)繼承QWidget,自定義PanelWidget控件

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

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

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

面闆布局