
图片不知道为什么上传不上去,我就传个附件吧!
这是我做的音量调节控件,烦请大家批评指正
ButtonVoice::ButtonVoice(QWidget *parent) : QWidget(parent),ui(new Ui::ButtonVoice)
{
ui->setupUi(this);
m_drag = false
ui->bar->setStyleSheet("QProgressBar#bar::chunk{background:blue}");
m_frame = new QFrame(this);
m_frame->setMaximumSize(30);
m_frame->setMinimumSize(30);
m_frame->setMouseTracking(true);
m_frame->setStyleSheet("QFrame{border-radius:15px;border-image:url(***.png)}");
m_frame->move(QPoint(this->width()*ui->bar->value()/100-15,this->y()/2));
m_frame->show();
m_frame->setVisible(false);
}
ButtonVoice::~ButtonVoice
{
delete ui;
}
void ButtonVoice::mousePressEvent(QMouseEvent *e)
{
if(e && e->button() == Qt::LeftButton && e->x()>m_frame->x() && e->x()<m_frame->x()+m_frame->width())
{
m_drag = true;
}
else
{
m_frame->move(e->pos().x()-15,0);
ui->bar->setValue((e->pos.x()-15)*100/(this->width()-30));
m_drag=true;
}
e->accept();
}
void ButtonVoice::mouseMoveEvent(QMouseEvent *e)
{
m_frame ->setVisible(true);
if(m_drag == true)
{
if(e->pos().x()-15<0 || e->pos().x()+15 > this->width())
{
return;
}
m_frame->move(e->pos().x()-15,0);
ui->bar->setValue((e->pos().x()-15)*100/(this->width()-30));
}
}
void ButtonVoice::mouseReleaseEvent(QMouseEvent *e)
{
m_drag = false;
}
ui文件就不上传了,就是一个高度固定为30的widget,里面是一个progressbar,固定高度20,使用栅格布局,上下左右间距分别为5,5,15,15
和附件效果不同,但是稍加修改就可以相同了,请大家指正!