qt 自定义标题栏
时间: 2023-07-02 20:07:56 浏览: 206
QT窗口,自定义标题栏 并实现拉伸 移动功能示例
在 Qt 中,可以通过自定义 QWidget 的 paintEvent() 函数来实现自定义标题栏。具体步骤如下:
1.创建一个新的 QWidget,用于作为自定义标题栏。
2.将 QWidget 的窗口标志设置为 Qt::WindowFlags(Qt::FramelessWindowHint),这样可以去掉默认的标题栏。
3.重写 QWidget 的 paintEvent() 函数,在该函数中绘制自定义标题栏。
4.将 QWidget 设置为 QMainWindow 的标题栏,即调用 QMainWindow 的 setWindowTitle() 函数,并将其参数设置为自定义标题栏的指针。
下面是一个简单的示例代码:
```
#include <QtWidgets>
// 继承 QWidget,作为自定义标题栏
class CustomTitleBar : public QWidget
{
public:
CustomTitleBar(QWidget *parent = nullptr)
: QWidget(parent)
{
// 设置窗口标志
setWindowFlags(Qt::FramelessWindowHint);
}
protected:
void paintEvent(QPaintEvent *) override
{
QPainter painter(this);
painter.fillRect(rect(), Qt::blue);
painter.drawText(rect(), Qt::AlignCenter, "Custom Title Bar");
}
};
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QMainWindow mainWindow;
// 设置主窗口标题
mainWindow.setWindowTitle("Main Window");
// 创建自定义标题栏
CustomTitleBar *titleBar = new CustomTitleBar(&mainWindow);
// 设置自定义标题栏为主窗口的标题栏
mainWindow.setMenuWidget(titleBar);
mainWindow.show();
return app.exec();
}
```
运行该程序,可以看到自定义的蓝色标题栏。你可以根据自己的需要修改 paintEvent() 函数,来实现各种不同样式的标题栏。
阅读全文