闲暇之余实现一个简单的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自定义窗口标题栏的代码实现,您可以根据自己的需求进行修改和扩展。