用QMenu实现
显示倍速菜单
// 创建右键菜单
if (m_pSpeedMenu == nullptr)
{
m_pSpeedMenu = new QMenu(this);
QAction* pSpeed1 = new QAction(tr("2.0x"), this);
QAction* pSpeed2 = new QAction(tr("1.5x"), this);
QAction* pSpeed3 = new QAction(tr("1.25x"), this);
QAction* pSpeed4 = new QAction(tr("1.0x"), this);
QAction* pSpeed5 = new QAction(tr("0.75x"), this);
QAction* pSpeed6 = new QAction(tr("0.5x"), this);
//把对象加到菜单上
m_pSpeedMenu->addAction(pSpeed1);
m_pSpeedMenu->addAction(pSpeed2);
m_pSpeedMenu->addAction(pSpeed3);
m_pSpeedMenu->addAction(pSpeed4);
m_pSpeedMenu->addAction(pSpeed5);
m_pSpeedMenu->addAction(pSpeed6);
pSpeed1->setData(1);
pSpeed2->setData(2);
pSpeed3->setData(3);
pSpeed4->setData(4);
pSpeed5->setData(5);
pSpeed6->setData(6);
//链接鼠标右键点击实现倍速
connect(pSpeed1, SIGNAL(triggered()), this, SLOT(speedChangeSlot()));
connect(pSpeed2, SIGNAL(triggered()), this, SLOT(speedChangeSlot()));
connect(pSpeed3, SIGNAL(triggered()), this, SLOT(speedChangeSlot()));
connect(pSpeed4, SIGNAL(triggered()), this, SLOT(speedChangeSlot()));
connect(pSpeed5, SIGNAL(triggered()), this, SLOT(speedChangeSlot()));
connect(pSpeed6, SIGNAL(triggered()), this, SLOT(speedChangeSlot()));
}
// 显示菜单
m_pSpeedMenu->exec(QCursor::pos());
设置倍速实现
void PlaybackWidget::speedChangeSlot()
{
QAction* pEven = qobject_cast<QAction *>(this->sender());
int iType = pEven->data().toDouble();
switch (iType)
{
case 1:
ui.m_pSpeedBtn->setText("2x");
m_pPlayback->setPlaybackSpeed(2);
break;
case 2:
ui.m_pSpeedBtn->setText("1.5x");
m_pPlayback->setPlaybackSpeed(1.5);
break;
case 3:
ui.m_pSpeedBtn->setText("1.25x");
m_pPlayback->setPlaybackSpeed(1.25);
break;
case 4:
ui.m_pSpeedBtn->setText("1x");
m_pPlayback->setPlaybackSpeed(1);
break;
case 5:
ui.m_pSpeedBtn->setText("0.75x");
m_pPlayback->setPlaybackSpeed(0.75);
break;
case 6:
ui.m_pSpeedBtn->setText("0.5x");
m_pPlayback->setPlaybackSpeed(0.5);
break;
default:
break;
}
}
void SituPlayback::setPlaybackSpeed(double speed)
{
//设置时间间隔为倍速
m_pTimer->setInterval(1000 * 1 / speed);
}