Qt自定义窗体系统按钮

首先可以使用setWindowFlags(Qt::FramelessWindowHint);
来隐藏窗体的标题栏, 当然也包括了默认的系统按钮.

然后在可以通过代码或者Qt的Designer在窗体右上角摆放好最小化, 最大化(还原), 和关闭三个按钮并关联好信号槽.
分别设置三个按钮的QSS

	QToolButton#toolButtonMin{  
		border-image: url(:/images/min(1).png);
	}
	
	QToolButton#toolButtonMin:hover{  
		border-image: url(:/images/min(3).png);
	}
	
	QToolButton#toolButtonMin:pressed{  
		border-image: url(:/images/min.png);
	}

最大化和还原按钮其实一个, 需要根据窗体的最大化/恢复状态来进行切换
qss中根据最大化属性来进行不同图片的加载

	QToolButton#toolButtonMax[maximizeProperty="maximize"]{  
		border-image: url(:/images/max(1).png);
	}
	
	QToolButton#toolButtonMax[maximizeProperty="maximize"]:hover{  
		border-image: url(:/images/max(3).png);
	}
	
	QToolButton#toolButtonMax[maximizeProperty="maximize"]:pressed{  
		border-image: url(:/images/max.png);
	}
	
	QToolButton#toolButtonMax[maximizeProperty="restore"]{  
		border-image: url(:/images/restore(1).png);
	}
	
	QToolButton#toolButtonMax[maximizeProperty="restore"]:hover{  
		border-image: url(:/images/restore(3).png);
	}
	
	QToolButton#toolButtonMax[maximizeProperty="restore"]:pressed{  
		border-image: url(:/images/restore.png);
	}

cpp中同样需要设置, 其中unpolish()和polish()是为了让样式重新绘制

    bool bMaximize = this->isMaximized();
    ui->toolButtonMax->setProperty("maximizeProperty", bMaximize ? "restore" : "maximize");
    ui->toolButtonMax->style()->unpolish(ui->toolButtonMax);
    ui->toolButtonMax->style()->polish(ui->toolButtonMax);
    ui->toolButtonMax->update();

在这里插入图片描述

需要完整代码请访问 QtWidgetsExamples

联系方式:

作者郑天佐
QQ278969898
主页http://www.camelstudio.cn
邮箱camelsoft@163.com
博客http://blog.csdn.net/zhengtianzuo06
githubhttps://github.com/zhengtianzuo
QQ群199672080

在这里插入图片描述

觉得分享的内容还不错, 就请作者喝杯咖啡吧~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

zhengtianzuo

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

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

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

打赏作者

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

抵扣说明:

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

余额充值