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、实现自定义的标题栏 -- > 主窗体设置无标题样式 -- > 将自定义的标题栏添加到主窗体上 -- > 在主窗体重绘函数中添加变化代码;

原文地址:https://www.cnblogs.com/craigtao/p/6244213.html