按钮的选中与否
使用 ui->radioButton->isChecked(); 该成员方法获取选中状态
使用 ui->radioButton->setChecked(true); 设置按钮的选中状态
按钮设置文本放置位置
ui->radioButton->setLayoutDirection(Qt::RightToLeft);
//LayoutDirection:枚举值 在qnamespace.h 头文件里面
enum LayoutDirection
{
LeftToRight,
RightToLeft,
LayoutDirectionAuto
};
有的时候我们可能在多个父容器不同时RadioButton一起使用,需要多条件选中1个。这时候我们就需要给所有需要互斥的按钮添加到一个互斥组里面。其他按钮也可如此实现。
QButtonGroup* m_btn_group = new QButtonGroup(this);
m_btn_group->addButton(ui->radioButton);
m_btn_group->addButton(ui->radioButton_2);
这样,就算我们没在一个父容器里面也能达到互斥的效果。
然后自定义选中效果
1.编写QSS样式表
a.采用贴图,其实很多东西文档里面都有demo。
QRadioButton::indicator::unchecked {
image: url(:/images/radiobutton_unchecked.png);
}
QRadioButton::indicator:unchecked:hover {
image: url(:/images/radiobutton_unchecked_hover.png);
}
QRadioButton::indicator:unchecked:pressed {
image: url(:/images/radiobutton_unchecked_pressed.png);
}
QRadioButton::indicator::checked {
image: url(:/images/radiobutton_checked.png);
}
QRadioButton::indicator:checked:hover {
image: url(:/images/radiobutton_checked_hover.png);
}
QRadioButton::indicator:checked:pressed {
image: url(:/images/radiobutton_checked_pressed.png);
}
b.更改背景
QRadioButton::indicator{
border-radius: 7px;
border: 2px solid yellow;
}
QRadioButton::indicator:checked {
background-color: blue;
}
然后这个别忘了到main函数更改整个程序风格
#include <QStyleFactory>
QApplication::setStyle(QStyleFactory::create("Fusion"));
这个不更改风格发现选中后背景边框为方形。应该是Qt内置的全局样式风格限制。
2.继承该控件并重绘。 好吧,我并没有这么做过。当然也是可以实现的。纯自定义控件了。