【三十四】【QT开发应用】音量图标以及滑动条,没有代码补全的小技巧

效果展示

在这里插入图片描述

  • 鼠标位于音量图标区域内,显示出滑动条。鼠标移出音量图标区域内滑动条隐藏。
  • 鼠标点击音量图标,如果此时音量为0,音量变成50,如果此时音量不为零,音量变为0。

CVolumeButton.h 音量图标头文件

#pragma once
#include <QtWidgets>
#include "CVolumeSliderDialog.h"

class CVolumeButton :
	public QPushButton {
   
	Q_OBJECT
public:
	CVolumeButton(QWidget* p = nullptr);
	~CVolumeButton();



protected:
	void enterEvent(QEnterEvent* event) override;
	void timerEvent(QTimerEvent* event) override;
	void mousePressEvent(QMouseEvent* event) override;
	


private:
	CVolumeSliderDialog* m_pVolumeSliderDlg = nullptr;
	int m_timerId = -1;
	bool m_isMute = false;
};


  • #include <QtWidgets> 是 Qt 库中用于引入所有与图形用户界面(GUI)相关控件的头文件。可以理解为是一个模块头文件,用这一个头文件就可以包含许多其他的头文件,和C++中的万能头文件#include<bits/stdc++>有异曲同工之妙。通过 #include <QtWidgets>,你可以一次性引入所有常用的 GUI 控件,而无需单独引入每个控件的头文件。它包含了大部分用于创建桌面应用程序的常见控件,比如 QMainWindow、QDialog、QPushButton 等。
  • 重载了这三个函数事件,enterEvent是进入事件,也就是说当鼠标进入到空间区域内会触发的事件.timerEvent是定时器事件,设置完毕定时器之后,每过一段事件就会触发一遍定时器内的函数逻辑.mousePressEvent是鼠标按下事件,当鼠标按下按键之后,会触发的事件.
    	void enterEvent(QEnterEvent* event) override;
    	void timerEvent(QTimerEvent* event) override;
    	void mousePressEvent(QMouseEvent* event) override;
    
  • CVolumeSliderDialog是滑动条类,m_timerId是定时器的ID,创建出一个定时器之后会返回一个定时器ID,m_isMute用来判断音量是否不为0,也就是说判断是否有音量.
    	CVolumeSliderDialog* m_pVolumeSliderDlg = nullptr;
    	int m_timerId = -1;
    	bool m_isMute = false;
    

CVolumeButton.cpp 音量图标源文件

#include "CVolumeButton.h"


CVolumeButton::CVolumeButton(QWidget* p)
	:QPushButton(p) {
   

	this->setFixedSize
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

妖精七七_

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

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

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

打赏作者

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

抵扣说明:

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

余额充值