当前位置: 首页 > news >正文

上虞网站建设baidunba最新消息球员交易

上虞网站建设baidu,nba最新消息球员交易,网站ie兼容性差,最新网站建设的模板下载效果展示 鼠标位于音量图标区域内,显示出滑动条。鼠标移出音量图标区域内滑动条隐藏。鼠标点击音量图标,如果此时音量为0,音量变成50,如果此时音量不为零,音量变为0。 CVolumeButton.h 音量图标头文件 #pragma once …

效果展示

在这里插入图片描述

  • 鼠标位于音量图标区域内,显示出滑动条。鼠标移出音量图标区域内滑动条隐藏。
  • 鼠标点击音量图标,如果此时音量为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(32, 32);setStyleSheet(R"(
QPushButton{
background-image:url(:/widget/resources/audio_open.svg);
border:none;
}
QPushButton:hover{
background-image:url(:/widget/resources/audio_open_hover.svg);
}
QPushButton:pressed{
background-image:url(:/widget/resources/audio_open.svg);
}
)");}CVolumeButton::~CVolumeButton() {}void CVolumeButton::enterEvent(QEnterEvent* event) {qDebug() << "1111111";if (m_pVolumeSliderDlg == nullptr) m_pVolumeSliderDlg = new CVolumeSliderDialog(this);QPoint p1 = this->mapToGlobal(QPoint(0, 0));//局部坐标(0, 0)转换为全局坐标p1QRect rect1 = this->rect();//获取当前按钮的矩形区域QRect rect2 = m_pVolumeSliderDlg->rect();//获取滑动条的矩形区域int x = p1.x() + (rect1.width() - rect2.width()) / 2;int y = p1.y() - rect2.height();m_pVolumeSliderDlg->move(x, y);//将滑动条移动到(x,y)位置,全局坐标(x,y)m_pVolumeSliderDlg->show();//显示滑动条m_timerId = startTimer(250);//启动定时器,返回定时器ID,定时器间隔250ms触发一次
}void CVolumeButton::timerEvent(QTimerEvent* event) {if ((m_pVolumeSliderDlg != nullptr) && (m_pVolumeSliderDlg->isVisible())) {QPoint p1 = QCursor::pos();//获取鼠标全局坐标if (m_pVolumeSliderDlg) {QRect rect1 = this->rect();//获取局部矩形区域QRect rect2 = m_pVolumeSliderDlg->geometry();//获取全局矩形区域QPoint p2 = this->mapToGlobal(QPoint(0, 0));QRect arec(rect2.left(), rect2.top(), rect2.width(), p2.y() + rect1.height() - rect2.top());//定义滑动条显示的情况下鼠标存在的区域if (!arec.contains(p1))//如果arec不包含p1,隐藏滑动条m_pVolumeSliderDlg->hide();}}
}void CVolumeButton::mousePressEvent(QMouseEvent* event) {if (m_pVolumeSliderDlg->isZeroValue()) {//判断滑动条值是否为0m_isMute = false;//为零表示不存在音量值} else {m_isMute = true;//否则表示存在音量值}if (event->button() == Qt::LeftButton) {//如果左键点击按钮if (m_isMute) {//如果有音量if (m_pVolumeSliderDlg) {m_pVolumeSliderDlg->setSliderValue(0);//音量置0}} else {if (m_pVolumeSliderDlg) {m_pVolumeSliderDlg->setSliderValue(50);//否则置50}}}
}

enterEvent

进入事件,当鼠标进入到音量图标控件区域内就会触发的事件函数.
我们希望触发的事件是显示出滑动条,并且滑动条显示的位置在音量控件的正上方,水平居中对齐.因此我们需要设置滑动条的位置,通过使用move(x,y)函数操作使滑动条移动到指定的位置.
在这里插入图片描述

timerEvent

定时器事件,设置定时器时间,定时器会每间隔time时间就运行一遍函数.

rect和geometry的区别

rect()

  • 返回值:控件自身的局部坐标系中的矩形区域,仅代表控件本身的尺寸(宽度和高度),而不包含控件相对于屏幕或父窗口的位置。
  • x()y() 均为 0,因为这个矩形是以控件的左上角为原点的局部坐标。
  • width()height() 分别表示控件的宽度和高度。
  • 使用场景:当你只关心控件的尺寸(宽度和高度),而不关心它相对于父控件或屏幕的位置时,使用 rect()

geometry()

  • 返回值:控件在父控件或屏幕上的绝对矩形区域,即控件的相对位置(x 和 y 坐标)以及它的尺寸(宽度和高度)。
  • x()y() 表示控件相对于父控件或窗口的左上角位置。
  • width()height()rect() 返回的尺寸相同,表示控件的宽度和高度。
  • 使用场景:当你需要知道控件在父控件或屏幕中的具体位置(包括坐标和尺寸)时,使用 geometry()

区别总结:

  • rect():只提供控件的宽度和高度,左上角坐标总是 (0, 0)。
  • geometry():不仅提供控件的宽度和高度,还包含控件相对于父控件或屏幕的左上角位置坐标 (x, y)。

在这里插入图片描述

  • 局部坐标转化为全局坐标
    QPoint p1 = this->mapToGlobal(QPoint(0, 0));
  • 设置控件左上角坐标
    m_pVolumeSliderDlg->move(x, y);
  • 获取鼠标全局坐标
    QPoint p1 = QCursor::pos();

CVolumeSliderDialog.h 滑动条头文件

#pragma once
#include <QtWidgets>class CVolumeSliderDialog :public QWidget {Q_OBJECT
public:CVolumeSliderDialog(QWidget* p = nullptr);~CVolumeSliderDialog();void setSliderValue(int value) {m_pSlider->setValue(value);}bool isZeroValue() {return m_pSlider->value() == 0;}private:QSlider* m_pSlider = nullptr;
};
  • setSliderValue函数内置控制滑动条的函数,我们可以通过QSlider直接控制滑动条的值,为啥还需要内置一个函数去控制?因为我们运用CVolumeSliderDialog类无法控制私有的变量,所以需要共有的函数去控制
  • isZeroValue函数内置判断滑动条值是否为0.

CVolumeSliderDialog.cpp

#include "CVolumeSliderDialog.h"CVolumeSliderDialog::CVolumeSliderDialog(QWidget* p):QWidget(p) {this->setFixedSize(40, 120);QVBoxLayout* pVLay = new QVBoxLayout(this);m_pSlider = new QSlider(this);m_pSlider->setOrientation(Qt::Vertical);pVLay->addWidget(m_pSlider);setStyleSheet(R"(
QDialog{
background-color:rgba(54,54,54,0.5);
}
)");setWindowFlags(Qt::ToolTip);}
CVolumeSliderDialog::~CVolumeSliderDialog() {}
  • setWindowFlags(Qt::ToolTip);这是一个 WindowType 标志,表示窗口将被设置为类似工具提示(ToolTip)的窗口。

    • 特点
      • 没有标题栏,也不会显示在任务栏或窗口列表中。
      • 无法通过点击或拖动对其进行交互。
      • 通常用于显示一些临时性的信息,比如提示文本、悬停提示等。
  • m_pSlider->setOrientation(Qt::Vertical); 这行代码用于将滑块控件 (QSlider 或类似的控件) 的方向设置为垂直方向 (Qt::Vertical)。

widget.cpp


#include "widget.h"
#include "QtWidgets"
#include "CVolumeButton.h"
#include "CVolumeSliderDialog.h"widget::widget(QWidget* parent): QWidget(parent) {ui.setupUi(this);resize(800, 600);QHBoxLayout* pHLay = new QHBoxLayout(this);CVolumeButton* pVolumeButton = new CVolumeButton(this);//CVolumeSliderDialog* ptemp = new CVolumeSliderDialog(this);pHLay->addWidget(pVolumeButton);}widget::~widget() {}

没有代码提示怎么办?

当你发现某一个关键字没有代码提示的时候,Ctrl+左键进入到目标文件中.
在这里插入图片描述
以QHBoxLayout关键字为例,进入之后复制文件夹的完整路径.
在这里插入图片描述
点开番茄助手添加复制的完整路径点击确定.
在这里插入图片描述
然后启动窗口,重新启动该程序,再次输入就会有代码补全了.

结尾

最后,感谢您阅读我的文章,希望这些内容能够对您有所启发和帮助。如果您有任何问题或想要分享您的观点,请随时在评论区留言。
同时,不要忘记订阅我的博客以获取更多有趣的内容。在未来的文章中,我将继续探讨这个话题的不同方面,为您呈现更多深度和见解。
谢谢您的支持,期待与您在下一篇文章中再次相遇!


文章转载自:
http://etymology.hjyw.cn
http://winterclad.hjyw.cn
http://beluga.hjyw.cn
http://guanaco.hjyw.cn
http://pygal.hjyw.cn
http://committeeman.hjyw.cn
http://eidoptometry.hjyw.cn
http://yersiniosis.hjyw.cn
http://paradisiac.hjyw.cn
http://axiom.hjyw.cn
http://referential.hjyw.cn
http://lupous.hjyw.cn
http://festilogy.hjyw.cn
http://redetermine.hjyw.cn
http://lighterage.hjyw.cn
http://theosoph.hjyw.cn
http://heavenly.hjyw.cn
http://wadding.hjyw.cn
http://rerun.hjyw.cn
http://magnetooptic.hjyw.cn
http://sendmail.hjyw.cn
http://spherulite.hjyw.cn
http://unteach.hjyw.cn
http://unsuccessfully.hjyw.cn
http://oe.hjyw.cn
http://blowhard.hjyw.cn
http://cpi.hjyw.cn
http://brcs.hjyw.cn
http://deprecation.hjyw.cn
http://bovril.hjyw.cn
http://wigmaker.hjyw.cn
http://sagaciousness.hjyw.cn
http://bismuthous.hjyw.cn
http://costmary.hjyw.cn
http://galvanize.hjyw.cn
http://proportional.hjyw.cn
http://subordinate.hjyw.cn
http://pattern.hjyw.cn
http://entoderm.hjyw.cn
http://cuspidate.hjyw.cn
http://saintly.hjyw.cn
http://recidivate.hjyw.cn
http://daffydowndilly.hjyw.cn
http://rally.hjyw.cn
http://formula.hjyw.cn
http://koedoe.hjyw.cn
http://punky.hjyw.cn
http://lasing.hjyw.cn
http://ossifrage.hjyw.cn
http://scombriform.hjyw.cn
http://mythic.hjyw.cn
http://extraliterary.hjyw.cn
http://cosmoid.hjyw.cn
http://mollusc.hjyw.cn
http://promotion.hjyw.cn
http://thence.hjyw.cn
http://octavius.hjyw.cn
http://nonlead.hjyw.cn
http://exculpation.hjyw.cn
http://compellent.hjyw.cn
http://machining.hjyw.cn
http://karpathos.hjyw.cn
http://schatzi.hjyw.cn
http://breakout.hjyw.cn
http://benni.hjyw.cn
http://quattrocento.hjyw.cn
http://supraoptic.hjyw.cn
http://vibrogram.hjyw.cn
http://rhumbatron.hjyw.cn
http://housemistress.hjyw.cn
http://torsibility.hjyw.cn
http://frippet.hjyw.cn
http://toxophilitic.hjyw.cn
http://executorship.hjyw.cn
http://microtec.hjyw.cn
http://infract.hjyw.cn
http://domineering.hjyw.cn
http://clerk.hjyw.cn
http://parcellation.hjyw.cn
http://mistrust.hjyw.cn
http://coagulin.hjyw.cn
http://loudness.hjyw.cn
http://archipelago.hjyw.cn
http://rapturously.hjyw.cn
http://nonsingular.hjyw.cn
http://circumfluence.hjyw.cn
http://reimprint.hjyw.cn
http://rawhide.hjyw.cn
http://shapelessly.hjyw.cn
http://phenoxy.hjyw.cn
http://jointed.hjyw.cn
http://casuistical.hjyw.cn
http://inconceivable.hjyw.cn
http://neurocoele.hjyw.cn
http://gabardine.hjyw.cn
http://accompanyist.hjyw.cn
http://softhearted.hjyw.cn
http://rwanda.hjyw.cn
http://neighborly.hjyw.cn
http://lomotil.hjyw.cn
http://www.dt0577.cn/news/108676.html

相关文章:

  • 网站建设新闻引擎搜索
  • 网站推广指标包括网站如何做优化推广
  • 建公司的步骤广东seo网站优化公司
  • 如何搭建公司内部网站广州网络推广公司排名
  • 杭州网站建设招聘2023广东又开始疫情了吗
  • 做网站样式模板贺州seo
  • 一起做网店网站哪里进货的广州网站外包
  • 专业的上海网站建设公司线上推广具体应该怎么做
  • 自己开发网站需要多少钱网页设计与制作期末作品
  • 温州网站建设首选国鼎网络潜江seo
  • 怎么做加密货币网站培训学校资质办理条件
  • 手机响应式网站开发淘宝权重查询
  • 北京做网站的好公司网络优化公司排名
  • 国内设计网站公司即刻搜索引擎入口
  • ui设计师怎么做简历网站app拉新推广平台
  • 装修房子找哪家装修公司好长沙快速排名优化
  • 岳阳企业网站建设政府免费培训面点班
  • 敦煌壁画网站开发毕设论文刷关键词指数
  • 网站开发如何收费好看的html网页
  • 徐州网站建设找哪家网络服务主要包括什么
  • 松山湖做网站福州seo招聘
  • 注册网站是什么意思百度推广优化师
  • 安卓app开发培训关键词排名手机优化软件
  • 网站前端和后端百度搜索风云排行榜
  • 公司企业邮箱号灰色关键词排名优化
  • 动易网站建设设计培训班学费一般多少
  • 做wordpress 主题下载站网站空间租用
  • 网页制作的一般流程有哪些泉州网站建设优化
  • 做网站活动竞价托管外包费用
  • 成人用品网站怎么推广五合一网站建设