QT编程读取歌词

请高手留步----------请问QT中如何下载、显示歌词???是用的QT自带的函数吗????我的分数就这些了,全给了,只求能够解答我的疑惑,若解决,感激不尽!!!!... 请高手留步----------请问QT中如何下载、显示歌词???是用的QT自带的函数吗????
我的分数就这些了,全给了,只求能够解答我的疑惑,若解决,感激不尽!!!!
展开
 我来答
糖糖寳寳
推荐于2016-10-28 · TA获得超过6.4万个赞
知道大有可为答主
回答量:1.8万
采纳率:92%
帮助的人:3936万
展开全部

  先上图一张.

  主要是使用了QPainter的叠加:

  [cpp] view plaincopy

  pTmp.setCompositionMode(QPainter::CompositionMode_Source);

  pTmp.fillRect(QRect(0, 0, paintw, rtText.height()), QBrush(Qt::white));

  pTmp.fillRect(QRect(0, 0, mPrecent, rtText.height()), QBrush(Qt::blue));

  pTmp.setCompositionMode(QPainter::CompositionMode_DestinationIn);

  pTmp.drawImage(0, 0, pmMask);

  pTmp.setCompositionMode(QPainter::CompositionMode_DestinationOver);


  主要函数:

  void testLyrics::DrawLyric(QPainter &p, const QRect& rt)

  {

  p.setBrush(Qt::darkGray);

  p.drawRect(rect());  

  const QString strLyric = mCurLyrics.lyric;

  QFont m_ftLyric(QString::fromLocal8Bit("微软雅黑"), 24, QFont::Bold);

  QPainter pTmp;

  QFontMetrics fm(m_ftLyric);

  QSize textSize = fm.size(Qt::TextSingleLine, strLyric);

  QRect textRect(QPoint(0,0),textSize);

  int paintw = textSize.width();

  int playedW = textSize.width()*0.5;

  QRect rtText = rect();

  //  pTmp.setRenderHints(QPainter::TextAntialiasing, true);

  QImage pmMask(paintw, rtText.height(),QImage::Format_ARGB32);

  pmMask.fill(Qt::transparent);

  if (pTmp.begin(&pmMask))

  {

  pTmp.setFont(m_ftLyric);

  pTmp.setPen(Qt::black);

  pTmp.drawText(pmMask.rect(), strLyric);

  }

  pTmp.end();

  QImage pmFG(paintw, rtText.height(),QImage::Format_ARGB32);

  if (pTmp.begin(&pmFG))

  {

  pTmp.setCompositionMode(QPainter::CompositionMode_Source);

  pTmp.fillRect(QRect(0, 0, paintw, rtText.height()), QBrush(Qt::white));

  pTmp.fillRect(QRect(0, 0, mPrecent, rtText.height()), QBrush(Qt::blue));

  pTmp.setCompositionMode(QPainter::CompositionMode_DestinationIn);

  pTmp.drawImage(0, 0, pmMask);

  pTmp.setCompositionMode(QPainter::CompositionMode_DestinationOver);

  // shadow

  pTmp.setFont(m_ftLyric);

  pTmp.setPen(QColor(0,0,0,0x80));

  pTmp.drawText(pmMask.rect(), strLyric);

  }

  pTmp.end();

  p.drawImage(rtText.left(), rtText.top(), pmFG);

  }

mileelove
推荐于2016-12-02 · TA获得超过454个赞
知道小有建树答主
回答量:183
采纳率:0%
帮助的人:326万
展开全部
首先下载歌词,应该会用到下面几个类 QNetworkAccessManager、QNetworkRequest、QNetworkReply 关于这几个类的用法,你可以直接去看下相关的文档。当你把歌词文件下载到本地之后,就需要你自己对lrc文件进行解析了。解析的工作就是将歌词与时间建立对应关系。你可以定义一个类来实现歌词解析,以及其他相关的接口
struct LyricLine
{
int time;
QString lyric;
}
class LyricHandler
{
.............
public:
QString getLyricAt( int currentTime ); //通过时间获取歌词
.........
public slots:
void parseLyricFile(const QString& fileName);//解析歌词

......
private:
QList<LyricLine*> m_lyricList;
};
当然要实现所以功能上面的接口是不够的,你自己可以按自己的要求添加。
然后当你在播放音乐的时候,可以根据当前的播放时间去查找对应的歌词,显示在界面上就OK了。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
方梓烃Ze
2010-12-31
知道答主
回答量:22
采纳率:0%
帮助的人:9.8万
展开全部
歌词是lrc文件这种文件格式是:时间+:歌词
可以根据播放的时间,然后显示lrc文件中对应的歌词。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xiaolaoga
2010-12-16 · TA获得超过7904个赞
知道小有建树答主
回答量:153
采纳率:0%
帮助的人:184万
展开全部
给网

参考资料: http://wenku.baidu.com/view/175f77c66137ee06eff91855.html

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式