右键点击QQ音乐出现的最近收听列表: 等等之类

时间:2021-12-26 07:48:41

本系列所有文章可以在这里检察

接上文Qt5官方demo解析集34——Concentric Circles Example

光看标题大家可能感受我们今天会聊一聊 Qt 中 multimedia 模块的相关内容,确实,该 demo 基于这个模块实现了一个音乐播放器,不过呢,我们今天更偏重于该 demo 中 winextras 模块的使用。

从名字可以猜到,该模块可以用来为我们供给一些Windows平台上特别的扩展成果,例如DWM(Desktop Window Manager) 特效,Aero Peek,Taskbar,Jump Lists,Thumbnail Toolbar等等,Qt为我们封装了相关 API 使得它们变得越发简单易用。如果大家对这些名词感想陌生,可以前往Qt 官网检察更详细的介绍: 。或者,,我给大家举几个身边的栗子:

不知道大家有没有留意过,当我们在使用 Qt Creator 进行构建时,其任务栏图标上的进度状态?

右键点击QQ音乐出现的最近收听列表: 等等之类

或者当我们将鼠标左键放在QQ音乐任务栏图标上时,呈现的上一曲、暂停、下一曲这些预览窗口按钮:

右键点击QQ音乐出现的最近收听列表: 等等之类

亦或是,右键点击QQ音乐呈现的比来收听列表:

右键点击QQ音乐出现的最近收听列表: 等等之类

等等之类,我就不一一列举了,站在GUI的角度来说,这些对象绝不是可有可无的

细节决定成败,用户总是能够在一些小的细节上收获惊喜和打动。

那么,看看我们如安在 Qt 中使用这些贴心的小玩意儿。

记得在pro文件中添加

[cpp]  

 

QT += winextras  

然后看看main.cpp,这里面有个实用的关联文件格局的helper函数:

[cpp]  

 

#include "musicplayer.h"  

  

#include <QApplication>  

#include <QFileInfo>  

#include <QSettings>  

#include <QIcon>  

#include <QDir>  

  

//! [0]  

static void associateFileTypes(const QStringList &fileTypes) // 这是一个helper函数,用来将某文件格局与本措施关联  

{  

    QString displayName = QGuiApplication::applicationDisplayName();  

    QString filePath = QCoreApplication::applicationFilePath();  

    QString fileName = QFileInfo(filePath).fileName();  

  

    QSettings settings("HKEY_CURRENT_USER\\Software\\Classes\\Applications\\" + fileName, QSettings::NativeFormat);  

    settings.setValue("FriendlyAppName", displayName);  

  

    settings.beginGroup("SupportedTypes");  

    foreach (const QString& fileType, fileTypes)  

        settings.setValue(fileType, QString());  

    settings.endGroup();  

  

    settings.beginGroup("shell");  

    settings.beginGroup("open");  

    settings.setValue("FriendlyAppName", displayName);  

    settings.beginGroup("Command");  

    settings.setValue(".", QChar(‘"‘) + QDir::toNativeSeparators(filePath) + QString("\" \"%1\""));  

}  

//! [0]  

  

int main(int argc, char *argv[])  

{  

    QApplication app(argc, argv);  

    app.setApplicationName("MusicPlayer");  

    app.setOrganizationName("QtWinExtras");  

    app.setOrganizationDomain("qt-project.org");  

    app.setApplicationDisplayName("QtWinExtras Music Player");  

    app.setWindowIcon(QIcon(":/logo.png"));