【二十六】【QT开发应用】无边窗窗口自定义标题栏以及利用WindowApi实现拖拉窗口,缩放窗口

设置无边窗属性

MainWidget::MainWidget(QWidget* parent)
	: QWidget(parent) {
   

	m_nBorderWidth = 5;
	//this->setWindowFlags(Qt::FramelessWindowHint |Qt::WindowMinMaxButtonsHint );
	this->setWindowFlags(Qt::FramelessWindowHint);



	initUI();
}

使用this->setWindowFlags(Qt::FramelessWindowHint);这行代码设置无边窗属性.
但是我们不设置Qt::WindowMinMaxButtonsHint这个属性,如果我们设置了这个属性会导致无法使用window api实现窗口的缩放.

自定义标题栏

在这里插入图片描述
添加新建类作为我们的自定义标题栏.

CTitileBar.h 头文件

#pragma once
#include <QWidget>
#include <QLabel>
#include <QPushButton>
class CTitleBar : public QWidget 
{
   
	Q_OBJECT

public:
	CTitleBar(QWidget* p = nullptr);
	~CTitleBar();

private:
	void initUI();

private:
	void mousePressEvent(QMouseEvent* event) override;

private:
	QLabel* Label_mpLogo;
	QLabel* Label_mpTitleText;

	QPushButton* Btn_mpSet;
	QPushButton* Btn_mpMin;
	QPushButton* Btn_mpMax;
	QPushButton* Btn_mpClose;

};


void initUI();定义初始化函数用来初始化该类,即自定义标题栏.
void mousePressEvent(QMouseEvent* event) override;重载mousePressEvent函数用来让窗口可以拖动.
对鼠标按下事件进行重写.

在这里插入图片描述

这些私有成员是该标题栏拥有的控件.

CTitileBar.cpp 源文件

#include "CTitleBar.h"
#include <QHBoxLayout>
#include <QVBoxLayout>
#include <qt_windows.h>

CTitleBar::CTitleBar(QWidget* p)
	:QWidget(p)
{
   
	initUI();
}

CTitleBar::~CTitleBar() {
   }

void CTitleBar::initUI() {
   
	setAttribute(Qt::WA_StyledBackground);
	this->setStyleSheet("background-color:rgb(156,156,156)");
	this->setFixedHeight(32);

	Label_mpLogo = new QLabel(this);
	Label_mpTitleText = new QLabel(this);
	Btn_mpSet = new QPushButton(this);
	Btn_mpMin = new QPushButton(this);
	Btn_mpMax = new QPushButton(this);
	Btn_mpClose = new QPushButton(this);

	Label_mpLogo->setFixedSize(24, 24);
	Label_mpTitleText->setText("我是标题");
	Label_mpTitleText->setFixedWidth(120);
	Btn_mpSet->setFixedSize(24, 24);
	Btn_mpMin->setFixedSize(24, 24);
	Btn_mpMax->setFixedSize(24, 24);
	Btn_mpClose->setFixedSize(24, 24);<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

妖精七七_

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

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

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

打赏作者

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

抵扣说明:

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

余额充值