Qt Dialog窗体使用自定义标题栏
运行效果如下图:
可以设计自己喜欢的风格,我这个只是简单演示功能
关键代码:
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、实现自定义的标题栏 -- > 主窗体设置无标题样式 -- > 将自定义的标题栏添加到主窗体上 -- > 在主窗体重绘函数中添加变化代码;