最近一直在忙項目,有段時間沒寫博客了;今天跟大家講講擴展對話框的實現;擴展對話框效果如下所示:
(1)初始界面:
(2)單擊<More>按鈕:
(3)再次單擊<More>按鈕:
這節主要講解用布局管理器方式實現,下節講解用手動進行部件定位的方式實現:
1、用Qt Creator新建一個QDialog的主窗口,然后使用Qt Designer往上面拖動一些基本部件即可,在這個例子中,我使用了一個進度條,一個文本標簽,兩個按鈕,以及一個QListWidget;其中進度條表示任務的操作進度,文本標簽則實時顯示任務的操作描述,如正在進行CRC驗證、正在寫文件等,一個OK按鈕用於關閉對話框,一個More按鈕用於顯示和隱藏QListWidget的高度部分;最后設計成的UI如下圖所示:
下面就要對這些部件進行布局設置了;OK和More按鈕使用水平布局,其中該布局中間再加上一個水平的Spacer,然后再對主對話框使用垂直布局即可。為了使OK按鈕和More按鈕更向里靠攏些,設置水平布局的layoutLeftMargin和layoutRightMargin屬性值,我設置為20,布局結果如下圖所示:
2、設置主對話框布局的大小約束為SetFixedSize;布局管理器的大小約束屬性解釋如下所示:
然后設置進度條的最小寬度即可。
3、 連接信號和槽函數
在OK按鈕的槽函數中關掉該窗口;在More按鈕的槽函數中對是否按下進行判斷,如果按下了,就顯示QListWidget,否則,就隱藏QListWidget;因為改變布局管理器中項后,布局管理器會重新計算布局信息。
4、 美化窗口
美化窗口我就不再講解了,包括圓角窗口,窗口背景以及按鈕樣式等,請各位參考我用Qt實現360界面的例子。
我把二進制文件打包供下載,希望大家提出意見,有什么不對的地方望指教;下載地址為:文件下載