QCheckBox复选框
继承QAbstractButton,支持快捷键
多组QCheckBox可以分别放在QButtonGroup或QWidget中实现不同属性的设置
属性
setText() 设置文本
const bool isChecked() 获取选中状态
void setChecked() 设置选中状态
setAutoExclusive() 设置排他性
信号
clicked(bool)信号 点击触发
toggled(bool)信号 状态发生改变时触发
QButtonGroup
属性
addButton(QAbstractButton *button) //增加按钮
setExclusive() //设置排他性
信号
buttonClicked/Presses/Released(QAbstractButton *button/int id)信号
buttonToggled(QAbstractButton *button/int id, bool checked)信号
QRadioButton单选框
类似QCheckBox,但默认单选
TestQRadioButton::TestQRadioButton(QWidget *parent)
: QWidget(parent)
{
ui.setupUi(this);
QRadioButton *rb1 = new QRadioButton("QRadioButton01");
QRadioButton *rb2 = new QRadioButton("QRadioButton02");
QRadioButton *rb3 = new QRadioButton("QRadioButton03");
QPushButton *pb1 = new QPushButton("Save");
QObject::connect(pb1, SIGNAL(clicked()), this, SLOT(Save()));
QButtonGroup *bg = new QButtonGroup(this);
bg->setObjectName("buttongroup");
bg->addButton(rb1);
bg->addButton(rb2);
bg->addButton(rb3);
QVBoxLayout *vb = new QVBoxLayout(this);
for (int i = 0; i < bg->buttons().size(); ++i) //遍历QButtonGroup获取节点
{
vb->addWidget(bg->buttons()[i]);
}
vb->addWidget(pb1);
}
void TestQRadioButton::Save()
{
QButtonGroup *group = this->findChild<QButtonGroup *>("buttongroup"); //获取子节点
if (group)
{
QRadioButton *rb = (QRadioButton *)group->checkedButton(); //获取选中属性
if (!rb)
{
QMessageBox::warning(this, "warn", "Please checked!");
return;
}
QMessageBox::information(this, "info", rb->text());
}
}
QComboBox下拉列表
文本编辑模式,相当于QLineEdit
可以添加图标
属性
setEditable(bool) //设置编辑模式
addItem(const QString/QIcon/QStringList, const QVariant)
addItems(constant QStringList) //新增数据
insertItem(int, const QIcon, const QString, QVariant)
insertItems(int, const QStringList) //插入数据
removeItem(int)
[slot] void QComboBox::clearEditText() //编辑模式时清空编辑框内容
[slot] void QComboBox::clear() //删除数据
信号
void activated(int/const QString) 用户选中激发
void currentIndexChanged(int/const QString) 索引改变(用户选中、代码调用)激发
void currentTextChanged(const QString) 文本改变激发
void currentTextChanged(const QString) 编辑模式时文本改变激发
void highlighted(int/const QString) 在列表项中移动时激发
QVariant实现向QComboBoxch插入自定义数据
struct MyType
{
int x = 0;
int y = 0;
};
Q_DECLARE_METATYPE(MyType); //注册自定义类型
void TestQVariant::Click()
{
qDebug() << ui.comboBox->itemText(0); //取ComboBox中的文本
QVariant var = ui.comboBox->itemData(0); //取ComboBox中的数据
qDebug() << "var.value<MyType>().x = " << var.value<MyType>().x; //取值
}
TestQVariant::TestQVariant(QWidget *parent)
: QWidget(parent)
{
ui.setupUi(this);
MyType my;
my.x = 101;
QVariant var;
var.setValue(my); //传值
ui.comboBox->addItem("item", var);
}
QSlider滑动条
属性
setRange(int min, int max) 设置范围
setSingleStep(键盘) 设置按键一次移动多少值
setPageStep(鼠标) 设置鼠标一次移动多少页
setOrientation(Horizontal/Vertical) 设置拖动按钮垂直/水平
信号
void sliderMoved(int) 鼠标拖动时激发
void sliderPressed() 点击拖动按钮时激发
void sliderReleased() 释放拖动按钮时激发
void valueChanged(int) 值改变时激发
qss设置
QSlider::groove{ //滑动槽
border:1px solid #999999;
border-radius:10px;
}
QSlider::handle{ //拖动按钮
margin:-10px 0;
}
QSlider::sub-page{ //设置滑动槽左侧颜色
}
QSlider::add-page{ //设置滑动槽右侧颜色
}
重载实现自定义控件
在Qt设计师界面对原控件提升即可转换为自定义控件,注意转换时的
void XSlider::mousePressEvent(QMouseEvent *e)
{
qDebug() << e->pos().x();
QSlider::mousePressEvent(e);
double p = (double)e->pos().x() / (double)width();
int val = p *(maximum() - minimum()) + minimum();
setValue(val);
}
XSlider::XSlider(QWidget *p) : QSlider(p)
{
}
XSlider::~XSlider()
{
}