qt自带的标题栏有时候无法满足项目所需,且样式单一,无法进行较大改动,因此想到自定义一个标题栏。
步骤: 1、将原标题栏去掉
//设置窗口无标题栏this->setWindowFlags(Qt::FramelessWindowHint |Qt::WindowSystemMenuHint | Qt::WindowMinMaxButtonsHint);qApp->installEventFilter(this);
2、在原窗口的界面顶部预留一块widget,用于作为自定义的标题栏,这里取名叫title_widget。
3、在自定义标题栏类TitleBar的ui中添加一个widget,存放相应的label和toolbutton,该widget大小与上述原窗口的大小相近。
4、在主窗口.cpp中给自定义标题栏对象添加布局,再将该布局设置到主窗口。
TitleBar *titlebar = new TitleBar;QHBoxLayout *layout = new QHBoxLayout;//设置布局内控件贴紧布局边框layout->setMargin(0);layout->setSpacing(0);//添加自定义标题栏layout->addWidget(titlebar);ui->title_Widget->setLayout(layout);//设置窗口固定尺寸this->setFixedSize(1300,700);
功能实现代码省略。。。。最终实现效果如下: