基于qt和css的MP3音乐播放器引擎开发

1

QMainWindow:
QMainWindow 是用于创建应用程序主窗口的类。它通常用于具有菜单栏、工具栏、状态栏等标准组件的窗口。
QMainWindow 提供了一种框架,用于组织和管理应用程序的用户界面元素。它可以包含其他小部件(widgets)和布局管理器(layout managers),如中心部件(central widget)、dock 窗口(dock widgets)等。
QDialog:
QDialog 是一个对话框窗口的基类。对话框通常用于临时交互,例如消息框、文件对话框、设置对话框等。
QDialog 提供了对话框的标准外观和行为,包括窗口标题、按钮、标签等。它可以用于创建自定义对话框,也可以用作其他对话框类的基类。
QWidget:
QWidget 是 Qt 中所有用户界面组件的基类。它提供了绘制、事件处理、布局等功能,是其他所有用户界面组件的基础。
QWidget 可以独立存在,也可以嵌入到其他容器中,如窗口、对话框、布局等。它是所有可视化组件的基础,包括按钮、文本框、标签等。
总的来说,QMainWindow 用于创建主窗口应用程序,QDialog 用于创建对话框窗口,而 QWidget 则是所有用户界面组件的基类,可以用于创建各种自定义的用户界面元素。

2

QPaintEvent是Qt框架中的一个事件类,用于绘制部件(widget)的内容。当一个部件需要重新绘制自己时,通常会触发一个QPaintEvent事件。
在处理QPaintEvent时,通常会在部件的绘制事件处理函数中进行绘制操作。这通常是在部件类的paintEvent函数中完成的,例如:

void MyWidget::paintEvent(QPaintEvent *event) {
    // 在这里进行绘制操作
}

在paintEvent函数中,您可以使用Qt提供的绘制工具(如QPainter)来绘制各种图形、文本和图像等内容。您可以在部件的绘制区域上绘制任何您想要的内容,以实现自定义的绘制效果。

例如,以下是一个简单的例子,演示了如何在部件的绘制区域上绘制一个矩形:

void MyWidget::paintEvent(QPaintEvent *event) {
    // 创建绘图对象
    QPainter painter(this);
    
    // 设置画笔和画刷
    painter.setPen(Qt::black);
    painter.setBrush(Qt::red);
    
    // 绘制矩形
    painter.drawRect(10, 10, 100, 100);
}

在这个例子中,我们在部件的绘制区域上绘制了一个红色矩形,左上角坐标为(10, 10),宽度为100,高度为100。
通过处理QPaintEvent事件,并在paintEvent函数中进行绘制操作,可以实现自定义的绘制效果,以满足需求。

3

qPainter.drawPixmap(0,0,width(),height(),QPixmap(":/new/prefix1/ResImages/MBGMusicplayer_ui2.jpg"));

让我们逐步解释这行代码的含义:
qPainter: 这是一个QPainter对象,用于在绘制设备上进行绘制操作。
drawPixmap: 这是QPainter类的一个方法,用于在绘图设备上绘制一个图像。
(0, 0): 这是要绘制图像的起始坐标,通常是左上角的坐标。
width(): 这是调用该代码的部件(可能是窗口或其他部件)的宽度。width()方法返回部件的宽度。
height(): 这是调用该代码的部件的高度。height()方法返回部件的高度。
QPixmap(“:/new/prefix1/ResImages/MBGMusicplayer_ui2.jpg”): 这是要绘制的图像。QPixmap类表示一个图像,(“:/new/prefix1/ResImages/MBGMusicplayer_ui2.jpg”)是图像文件的路径(可能是Qt资源文件路径),通过该路径加载图像。
因此,这行代码的作用是在调用该代码的部件上绘制指定路径的图像,起始坐标为(0, 0),绘制的大小与部件的大小相匹配。

QPainter qPainter(this);

通过将this传递给QPainter构造函数,您告诉Qt将绘图操作应用于当前的部件,即MainWindow

4

styleSheet
设置透明背景
font-size:14px;
color: rgb(255,255,255);
background-color: rgba(255,255,255,50);
这组CSS规则是用于设置按钮的样式,其中包括文字大小、文字颜色和背景颜色。让我解释一下每个属性的含义:
font-size: 14px;: 这指定了按钮文本的字体大小为14像素。
color: rgb(255, 255, 255);: 这指定了按钮文本的颜色为白色。使用了RGB表示法,RGB(255, 255, 255)代表白色。
background-color: rgba(255, 255, 255, 50);: 这指定了按钮的背景颜色为白色,同时设置了透明度为50%。这里使用了RGBA表示法,其中A代表Alpha通道,控制了颜色的透明度。RGBA(255, 255, 255, 50)表示白色并且透明度为50%。
请注意,透明度值介于0和255之间,0代表完全透明,255代表完全不透明。因此,50%的透明度对应的值是约127(255的一半)

5

控件透明化
styleSheet
QPushButton{
background-repeat:no-repeat;
background-position:center center;
border:none;
color:white;
}
QPushButton:hover{
background-repeat:no-repeat;
background-position:center center;
}
QPushButton:press{
background-repeat:no-repeat;
background-position:center center;
}
提供的是一组用于设置QPushButton样式的CSS规则。让我逐一解释它们:
QPushButton: 这是用于设置QPushButton默认状态的样式规则。它会影响所有普通状态下的QPushButton。
background-repeat: no-repeat;: 这指定了背景图像不应重复。
background-position: center center;: 这将背景图像定位于按钮的中心。
border: none;: 这指定了按钮的边框样式为无。
color: white;: 这指定了按钮文本的颜色为白色。
QPushButton:hover: 这是用于设置QPushButton在鼠标悬停时的样式规则。它会影响按钮在鼠标悬停时的外观。
background-repeat: no-repeat;: 这指定了背景图像不应重复。
background-position: center center;: 这将背景图像定位于按钮的中心。
QPushButton:press: 这是用于设置QPushButton在按下时的样式规则。它会影响按钮在按下时的外观。
background-repeat: no-repeat;: 这指定了背景图像不应重复。
background-position: center center;: 这将背景图像定位于按钮的中心。

6

定时器去边框
lineWidth调成0

groupbox白色
QGroupBox
{
font-size:14px;
color:white
}

7

这段代码是用于设置两个水平滑动条(horizontalSlider_PlayProgress 和 horizontalSlider_Volume)的样式。让我解释一下每个部分的含义:
QSlider::groove:horizontal: 这部分定义了滑动条轨道的样式,包括边框、背景颜色、高度和边框半径等。
QSlider::handle:horizontal: 这部分定义了滑块的样式,包括背景渐变、宽度、边框半径以及上下的边距。
horizontalSlider::sub-page:horizontal: 这部分定义了滑动条已填充部分的样式,包括背景颜色、边距和边框半径。
在这段代码中,滑动条轨道和滑块的样式设置是相同的,都是蓝色边框和蓝色背景,而滑块使用了径向渐变作为背景。已填充部分的样式为红色背景。
说明每个部分的作用:

ui->horizontalSlider_PlayProgress->setStyleSheet(

这行代码开始设置水平滑动条 horizontalSlider_PlayProgress 的样式。

"QSlider::groove:horizontal {"
"border:1px solid skyblue;"
"background-color:skyblue;"
"height:10px;"
"border-radius:5px;"
"}"

这段代码定义了滑动条轨道的样式。具体来说:

border:1px solid skyblue;:设置轨道的边框为1像素宽的天蓝色。
background-color:skyblue;:设置轨道的背景颜色为天蓝色。
height:10px;:设置轨道的高度为10像素。
border-radius:5px;:设置轨道的边框半径为5像素,使其呈现圆角。

"QSlider::handle:horizontal {"
"background:qradialgradient(spread:pad,cx:0.5,cy:0.5,radius:0.5,fx:0.5,fy:0.5,stop:0.7 white,stop:0.8 rgb(140,212,255));"
"width:20px;"
"border-radius:10px;"
"margin-top:-5px;"
"margin-bottom:-5px;"
"}"

这段代码定义了滑块的样式。具体来说:
background:qradialgradient(…);:设置了一个径向渐变作为滑块的背景,其中渐变从0.7位置的白色到0.8位置的RGB(140,212,255)。这个渐变将会形成滑块的视觉效果。
width:20px;:设置滑块的宽度为20像素。
border-radius:10px;:设置滑块的边框半径为10像素,使其呈现圆角。
margin-top:-5px; 和 margin-bottom:-5px;:这两行代码将滑块的上下外边距都设置为-5像素,用于垂直居中滑块。

"horizontalSlider::sub-page:horizontal{"
"background:red;"
"margin:5px;"
"border-radius:5px;"
"}"

这段代码定义了已填充部分的样式。具体来说:
background:red;:设置已填充部分的背景颜色为红色。
margin:5px;:设置已填充部分的外边距为5像素,用于与轨道之间的间距。
border-radius:5px;:设置已填充部分的边框半径为5像素,使其呈现圆角。

相关推荐

  1. 基于qtcssMP3音乐播放器引擎开发

    2024-03-14 05:38:03       33 阅读
  2. 基于Qt 音乐播放器mp3(进阶)

    2024-03-14 05:38:03       51 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-14 05:38:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-14 05:38:03       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-14 05:38:03       82 阅读
  4. Python语言-面向对象

    2024-03-14 05:38:03       91 阅读

热门阅读

  1. 分布式ID(8):分布式ID生成方法

    2024-03-14 05:38:03       39 阅读
  2. .NET中使用Redis大全

    2024-03-14 05:38:03       31 阅读
  3. volatile关键字用处和场景?

    2024-03-14 05:38:03       35 阅读
  4. 17 OpenCv Canny算子

    2024-03-14 05:38:03       41 阅读
  5. HiveQL详解

    2024-03-14 05:38:03       34 阅读
  6. 视频测试示例

    2024-03-14 05:38:03       34 阅读
  7. 什么是池架构?

    2024-03-14 05:38:03       33 阅读
  8. OpenCV加载视频

    2024-03-14 05:38:03       44 阅读
  9. AI大语言模型GPT & R 生态环境领域数据统计分析

    2024-03-14 05:38:03       43 阅读
  10. 软考笔记--层次式架构之数据访问层设计

    2024-03-14 05:38:03       36 阅读
  11. 浅谈Spring Cloud Ribbon原理及其使用方法

    2024-03-14 05:38:03       38 阅读
  12. 在组件上使用v-model

    2024-03-14 05:38:03       39 阅读
  13. SCI 图像处理期刊

    2024-03-14 05:38:03       36 阅读
  14. Flink实时写Hudi报NumberFormatException异常

    2024-03-14 05:38:03       42 阅读