QT最简单的自定义标题栏的方法

主页面设置隐藏原来标题栏

this->setWindowFlags(Qt::FramelessWindowHint);

UI中拉上控件

在这里插入图片描述

使用qss渲染一下子

* {
    font-family: "微软雅黑"
}
QWidget{
  background: #E7EEF6;
}

QWidget#title{
  background:qlineargradient(x1:0,y1:0,x2:1,y2:1,stop:0 #478fe1, stop:1 #0080cb);
}

结果

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
可以使用 Qt 的 QWidget 类来实现自定义标题栏,并且让鼠标可以拖动窗口。 以下是一个简单的示例代码: ```cpp #include <QtWidgets> class CustomTitleBar : public QWidget { public: CustomTitleBar(QWidget *parent = nullptr) : QWidget(parent) { // 设置标题栏大小和背景色 setFixedHeight(30); setStyleSheet("background-color: gray;"); // 添加标题栏上的标题 titleLabel = new QLabel("Custom Title Bar", this); titleLabel->setAlignment(Qt::AlignCenter); titleLabel->setStyleSheet("color: white;"); // 添加关闭按钮 closeButton = new QPushButton("X", this); closeButton->setFixedSize(20, 20); closeButton->setStyleSheet("background-color: red; color: white;"); // 将标题和关闭按钮布局到标题栏 QHBoxLayout *layout = new QHBoxLayout(this); layout->addWidget(titleLabel); layout->addStretch(); layout->addWidget(closeButton); layout->setContentsMargins(5, 0, 5, 0); } // 重写鼠标按下事件,实现窗口的拖动 void mousePressEvent(QMouseEvent *event) override { if (event->button() == Qt::LeftButton) { isDragging = true; lastMousePos = event->globalPos(); event->accept(); } } // 重写鼠标移动事件,实现窗口的拖动 void mouseMoveEvent(QMouseEvent *event) override { if (isDragging) { QPoint delta = event->globalPos() - lastMousePos; lastMousePos = event->globalPos(); parentWidget()->move(parentWidget()->pos() + delta); event->accept(); } } // 重写鼠标释放事件,实现窗口的拖动 void mouseReleaseEvent(QMouseEvent *event) override { if (event->button() == Qt::LeftButton) { isDragging = false; event->accept(); } } private: QLabel *titleLabel; QPushButton *closeButton; bool isDragging = false; QPoint lastMousePos; }; int main(int argc, char *argv[]) { QApplication app(argc, argv); // 创建窗口并设置标题栏自定义标题栏 QWidget window; window.setWindowFlags(Qt::FramelessWindowHint); CustomTitleBar *titleBar = new CustomTitleBar(&window); QVBoxLayout *layout = new QVBoxLayout(&window); layout->addWidget(titleBar); layout->addWidget(new QLabel("Hello World!", &window)); window.setLayout(layout); window.resize(300, 200); window.show(); return app.exec(); } ``` 在上述代码中,首先创建了一个名为 `CustomTitleBar` 的自定义窗口部件,它包括一个标题和一个关闭按钮。然后,在 `CustomTitleBar` 类中重写了鼠标按下、移动和释放事件,实现了窗口的拖动。 在 `main` 函数中,创建了一个窗口并设置标题栏自定义标题栏,然后将自定义标题栏和一个标签添加到窗口中。最后,设置窗口大小并显示窗口。 需要注意的是,为了实现窗口的拖动,需要将窗口的边框隐藏,可以使用 `setWindowFlags(Qt::FramelessWindowHint)` 来实现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_小白鱼儿_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值