Qt QCheckBox详解

发布时间:2023-03-10 17:00

一、QCheckBox

1. 常用方法

  • QCheckBox 继承于QAbstractButton,支持快捷键功能。
  • void setText(const QString &text):设置文本内容。
  • QString text() const:获取文本内容。
  • bool isChecked() const:判断是否选中。
  • void setAutoExclusive(bool):设置排斥功能。()

注意:QCheckBox默认是多选,只要一组QCheckBox不在一个层级(就是在不同父节点下面),就可以变成互斥不受影响。

二、QButtonGroup

1. 常用信号

  • void buttonClicked(QAbstractButton *); 按钮点击,(按钮基类指针)可以判断具体是哪个按钮被点击
  • void buttonClicked(int);
  • void buttonPressed(QAbstractButton *);
  • void buttonPressed(int);
  • void buttonReleased(QAbstractButton *);
  • void buttonReleased(int);
  • void buttonToggled(QAbstractButton *, bool);
  • void buttonToggled(int, bool);
//用lambda表达式绑定信号槽
	void (QButtonGroup::*buttonClicked)(QAbstractButton *) = &QButtonGroup::buttonClicked;
	connect(group, buttonClicked, [=](QAbstractButton *but) {
		qDebug() << but->objectName() << "|" << but->isChecked();
	});

2. 常用方法

  • void addButton(QAbstractButton *, int id = -1); //往按钮组里添加按钮
	//加组后默认变成单选
	QButtonGroup *group = new QButtonGroup(this);
	group->addButton(ui.checkBox);
	group->addButton(ui.checkBox_2);
  • void setExclusive(bool); //设置成单选按钮

三、QRadioButton

	QRadioButton *pButton1 = new QRadioButton("QRadioButton001");
	QRadioButton *pButton2 = new QRadioButton("QRadioButton002");
	QRadioButton *pButton3 = new QRadioButton("QRadioButton001");

	//按钮组
	QButtonGroup *pGroup = new QButtonGroup(this);
	pGroup->setObjectName("group");
	pGroup->addButton(pButton1);
	pGroup->addButton(pButton2);
	pGroup->addButton(pButton3);

	//垂直布局器
	QVBoxLayout *layout = new QVBoxLayout(this);
	//遍历按钮组
	for (const auto &it : pGroup->buttons())
	{
		layout->addWidget(it);
	}

	QPushButton *button = new QPushButton(QString::fromLocal8Bit("保存"),this);
	connect(button, &QPushButton::clicked, [=]() {
		//获取按钮组
		QButtonGroup *pGroup = this->findChild<QButtonGroup *>("group");
		if (pGroup != nullptr)
		{
		//获取按钮组的哪个按钮被点击
			QRadioButton *but = dynamic_cast<QRadioButton *>(pGroup->checkedButton());
			if (but != nullptr)
			{
				QMessageBox::information(this, "", but->text());	
			}
		}
	});

	layout->addWidget(button);

ItVuer - 免责声明 - 关于我们 - 联系我们

本网站信息来源于互联网,如有侵权请联系:561261067@qq.com

桂ICP备16001015号