運行效果如下圖:
可以設計自己喜歡的風格,我這個只是簡單演示功能
關鍵代碼:
setWindowFlags(Qt::CustomizeWindowHint|Qt::FramelessWindowHint); //將主窗體設置為這樣的樣式
uTitleBar = new UTitleBar(this); uTitleBar->setAutoFillBackground(true); //自動填充背景 QPalette palette; palette.setColor(QPalette::Background, QColor("#2162a9")); uTitleBar->setPalette(palette);
UTitleBar 是繼承為widget的一個自定義類
最后需要在 主窗體的resizeEvent函數中添加下列代碼
void Dialog::resizeEvent(QResizeEvent *) { QRect rc = rect(); int w = rc.width(); int h = rc.height(); uTitleBar->setGeometry(0, 0, w, 90); //自定義標題欄位置 }
整個思路:1、實現自定義的標題欄 -- > 主窗體設置無標題樣式 -- > 將自定義的標題欄添加到主窗體上 -- > 在主窗體重繪函數中添加變化代碼;