学会这招,你的Qt窗口标题栏将独一无二!

闲暇之余实现一个简单的Qt自定义窗口标题栏的代码实现,包括最小化、最大化和关闭按钮的自定义样式和点击事件处理。

我先创建一个自定义窗口标题栏类,名为CustomTitleBar,继承自QWidget类,代码如下:

#include <QWidget>

#include <QPushButton>

#include <QHBoxLayout>

#include <QMainWindow>

class CustomTitleBar : public QWidget

{

Q_OBJECT

public:

explicit CustomTitleBar(QMainWindow *window, QWidget *parent = nullptr);

private:

QPushButton *minButton;

QPushButton *maxButton;

QPushButton *closeButton;

private slots:

void handleMinimize();

void handleMaximize();

void handleClose();

};

接着实现CustomTitleBar类中的三个槽函数:

void CustomTitleBar::handleMinimize()

{

window()->minimize();

}

void CustomTitleBar::handleMaximize()

{

window()->maximize();

}

void CustomTitleBar::handleClose()

{

window()->close();

}

然后编写CustomTitleBar类的构造函数,创建按钮并设置按钮的点击事件和样式表:

CustomTitleBar::CustomTitleBar(QMainWindow *window, QWidget *parent) :

QWidget(parent), minButton(new QPushButton(QIcon(":/resources/minimize.png"), "")),

maxButton(new QPushButton(QIcon(":/resources/maximize.png"), "")), closeButton(new QPushButton(QIcon(":/resources/close.png"), ""))

{

QHBoxLayout *layout = new QHBoxLayout(this);

layout->addWidget(minButton);

layout->addWidget(maxButton);

layout->addWidget(closeButton);

connect(minButton, &QPushButton::clicked, this, &CustomTitleBar::handleMinimize);

connect(maxButton, &QPushButton::clicked, this, &CustomTitleBar::handleMaximize);

connect(closeButton, &QPushButton::clicked, this, &CustomTitleBar::handleClose);

}

最后,将自定义窗口标题栏设置为应用程序主窗口的中心部件:

int main(int argc, char *argv[])

{

QApplication a(argc, argv);

MainWindow w;

w.setCentralWidget(new CustomTitleBar(&w)); // 设置自定义标题栏为窗口中心部件

w.show();

return a.exec();

}

这只是一个简单的Qt自定义窗口标题栏的代码实现,您可以根据自己的需求进行修改和扩展。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Code咖

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

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

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

打赏作者

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

抵扣说明:

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

余额充值