一、btn的图标设置有以下2种方法,任一种都可以:
(1)btn->setIcon(QIcon(":PortPath/Resource/skin/1.jgpg"));
//注意::PortPath/Resource/skin/1.jgpg路径需要添加在工程.qrc路径中
<file>Resource/skin/1.jpg</file>
btn->setIconSize(QSize(20,20));
(2)QPixmap pixmag;
pixmag.load(":PortPath/Resource/skin/1.jgpg");
QPixmap pix;
pix = pixmag.copy(QRect(0,0,12,12)); //不同条件,设置不同的图片
btn->setIcon(QIcon(pix));
btn->setIconSize(QSize(20,20));
上面(1)(2)的路径可以设置相对路径,则就可以不用在.qrc文件中添加路径了,
如下设置btn图标的方法:
QString path = QApplication::applicationDirPath()+"skin/a.jgpg";
btn->setIcon(QPixmap(path));
二、设置RadioButton,QpushButton互斥,及设置一组按键是一个整体,它们之间的关系是互斥的。
1、添加成一个整体:
void QButtonGroup::addButton(QAbstractButton *button, int id = -1)
button的参考可以是
QCheckBox, QPushButton, QRadioButton, and QToolButton,
id可以是设置的添加button的索引,在事件捕获时,会传递对应的索引值id。
2、捕获点击事件
捕捉点击按键或者按钮的事件有下面两个:
(1)[signal] void QButtonGroup::buttonClicked(int id)
connect(buttonGroup,SIGNAL((buttonClicked(QAbstractButton(int)),
this,SLOT(onButtonClicked(int));
(2)[signal] void QButtonGroup::buttonClicked(QAbstractButton *button)
connect(m_pButtonGroup, SIGNAL(buttonClicked(QAbstractButton*)), this, SLOT(onButtonClicked(QAbstractButton*)));
事件捕获处理如下
(参考于Qt 之 QRadioButton_青春不老,奋斗不止!-CSDN博客_qradiobutton):
void MainWindow::onButtonClicked(QAbstractButton *button)
{
// 当前点击的按钮
qDebug() << QString("Clicked Button : %1").arg(button->text());
// 遍历按钮,获取选中状态
QList<QAbstractButton*> list = m_pButtonGroup->buttons();
foreach (QAbstractButton *pButton, list)
{
QString strStatus = pButton->isChecked() ? "Checked" : "Unchecked";
qDebug() << QString("Button : %1 is %2").arg(button->text()).arg(strStatus);
}
}
附:QCheckbox设置互斥键: