多个QPushButton公用一个槽函数
connect(ui->pBtnClrUnset,SIGNAL(clicked(bool)),this,SLOT(slotColor()));
connect(ui->pBtnClrRed,SIGNAL(clicked(bool)),this,SLOT(slotColor()));
connect(ui->pBtnClrBlue,SIGNAL(clicked(bool)),this,SLOT(slotColor()));
connect(ui->pBtnClrGreen,SIGNAL(clicked(bool)),this,SLOT(slotColor()));
connect(ui->pBtnClrWhite,SIGNAL(clicked(bool)),this,SLOT(slotColor()));
connect(ui->pBtnClrUnknown,SIGNAL(clicked(bool)),this,SLOT(slotColor()));
slotColor()函数中,对QPushButton进行动态转换
void Widget::slotColor()
{
int i;
QPushButton* pBtn = dynamic_cast<QPushButton*>(this->sender());
if(pBtn)
{
if(pBtn==ui->pBtnClrUnset)
{
i=0;
setColor(i,pBtn);
}
else if(pBtn==ui->pBtnClrRed)
{
i=1;
setColor(i,pBtn);
}
else if(pBtn==ui->pBtnClrBlue)
{
i=2;
setColor(i,pBtn);
}
else if(pBtn==ui->pBtnClrWhite)
{
i=3;
setColor(i,pBtn);
}
else if(pBtn==ui->pBtnClrGreen)
{
i=4;
setColor(i,pBtn);
}
else if(pBtn==ui->pBtnClrUnknown)
{
i=5;
setColor(i,pBtn);
}
}
}
设置给QPushButton设置颜色值
void Widget::setColor(int &i,QPushButton* p)
{
QMap<int,QColor> m_Color ;
QColor color = QColorDialog::getColor(m_Color.value(i),this,QString::fromUtf8("颜色设置"),QColorDialog::DontUseNativeDialog);
if(color.isValid())
{
p->setStyleSheet(QString("background-color:rgb(%1,%2,%3)").arg(color.red()).arg(color.green()).arg(color.blue()));
}
}
每天进步一点点,向大厂靠近