多个类操作同一个Ui界面的方法(音乐播放器前期总结)
来源:互联网 发布:linux 7种运行级别 编辑:程序博客网 时间:2024/05/16 06:59
最近自己在做类似于QQ音乐的播放器,用Qt模仿它的界面去写的。本地音乐播放功能差不多实现,除了歌词。
现在已实现的功能:(1)本地歌曲播放
(2)播放,暂停,下一首,上一首
(3)从文件夹添加歌曲至本地歌曲列表并显示
同时添加至数据库,数据库保存歌曲 id,歌曲地址,歌曲名,作者,专辑(4)进度条随播放时间移动
(5) 能拖动播放进度条并且显示拖动的位置上歌曲时间
解释一下想法,mywidge.h内声明了Ui::MyWidget *ui,这个时候ui是什么都没有的,它只是相当于告诉编译器我有这个类型的变量,
至于具体什么类型,内存分配之类到mywidget.cpp再说,至于mywidget.h里它为什么能用这个类型,因为上面namespace已经声明了。
转到mywidget.cpp来,可以看到MyWidget类的构造函数的初始化列表有个ui(new Ui::MyWidget);现在ui就不是空的了,它已经被初始化了,
这个类型具体的定义和内部构造可以打开ui_mywidget.h头文件,里面放了很多关键的东西,比如你放在ui界面下的部件的初始化,
将界面部件信号和转到槽生成的槽函数自动连接等等,不细说。以上都是你生成Qt Application项目就会自动帮你做好的,
下面是具体的如何多个类控制一个ui
假设mywidget.h和mywidget.cpp都是将军,他们高高在上,具体的琐事有小兵去做,而将军要做的就是生成一个个执行他们命令的小兵,
如mywidget.cpp里的one *menu = new one(ui);在产生小兵的同时把将军对界面控制权分给他们,他们就也能对界面去做修改了。
当然写博客的时候我也想到一个问题,把整个ui界面的控制权给其他类是否合适?这也就意味着其他类能做超越本身职权的事情,
例如操作播放控制栏的类也可以操作界面其他地方,所以是不是可以只传给它能操作的界面指针进去更合适。
这是我写音乐播放器前期的一点小感悟,分享出来,不吝赐教。也希望能帮到其他人。
不积跬步无以致千里,总结项目能帮助我理清思路,直视盲点,获得更多经验与知识。
代码如下(1)mywidget.h(随着ui一起生成的类的头文件)#ifndef MYWIDGET_H#define MYWIDGET_H#include <QWidget>namespace Ui {class MyWidget;}class one;class MyWidget : public QWidget{ Q_OBJECTpublic: explicit MyWidget(QWidget *parent = 0); ~MyWidget();private: Ui::MyWidget *ui; one *menu;};#endif // MYWIDGET_H(2)mywidget.cpp#include "mywidget.h"#include "ui_mywidget.h"#include <QPushButton>#include <one.h>MyWidget::MyWidget(QWidget *parent) : QWidget(parent), ui(new Ui::MyWidget){ ui->setupUi(this); menu = new one(ui);}MyWidget::~MyWidget(){ delete ui;}(3)one.h#ifndef ONE_H#define ONE_H#include <QWidget>namespace Ui {class MyWidget;}class one:public QWidget{ Q_OBJECTpublic: explicit one(Ui::MyWidget *ui);signals:public slots:private: Ui::MyWidget *oneui;};#endif // ONE_H(4)one.cpp#include "one.h"#include "ui_mywidget.h"one::one(Ui::MyWidget *ui){ oneui = ui;}
- 多个类操作同一个Ui界面的方法(音乐播放器前期总结)
- Andriod耗时操作的处理(音乐播放器欢迎界面)
- 总结4种线程中操作UI界面的方法
- 总结4种线程中操作UI界面的方法
- 总结4种线程中操作UI界面的方法
- 总结4种线程中操作UI界面的方法
- 漂亮UI的全能音乐播放器
- 音乐播放器-引导界面的实现
- 写的一个音乐播放器界面
- Android进阶(二)-------总结4种线程中操作UI界面的方法
- 音乐播放器操作
- 基于android的网络音乐播放器-播放控制界面(九)
- android音乐播放器的常用操作
- android-简单音乐播放器的总结
- 【android】音乐播放器之UI设计的点点滴滴
- 功能齐全界面漂亮的c#音乐播放器
- 功能齐全界面漂亮的c#音乐播放器
- 自己动手开发音乐播放器(一)主界面的搭建
- 一分钟解决Shape分割线及分割线圆角框
- CDH CSD and Upgrade
- linux 动态库的编译、调用,(用Makefile编译)
- 使用SCANNER读取整数
- 关于类似与俄罗斯娃娃的题的一些思考
- 多个类操作同一个Ui界面的方法(音乐播放器前期总结)
- delphi FMX使用模糊集合进行边缘提取
- centios下搭建jenkins+maven
- Mysql数据异常恢复
- Android签名
- There is no getter for property named 'username' in 'class java.lang.String错误!
- work
- Android 把Libraray 打包成Jar
- CentOS7 使用YUM 安装MySQL5.7(yum install mysql5.7)