Qt笔记 倍速播放菜单

用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);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值