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

 

posted @ 2017-01-03 11:25  仆人  阅读(10994)  评论(0编辑  收藏  举报