作者:勇敢的无心睡眠888 | 来源:互联网 | 2023-09-13 17:59
环境:Windows7 x64, VS2017, Qt5.12.6
实现效果:如下图,创建一个QButtonGroup,里面包含3个 QPushButton 单选。
代码:
MyAbstractButton.hpp
#pragma once#include
#include
#include
#include class MyAbstractButton : public QMainWindow
{Q_OBJECTpublic:MyAbstractButton(QWidget *parent = Q_NULLPTR);public slots:void onButtonClicked(QAbstractButton *button);private:
};
MyAbstractButton.cpp
#include
#include
#include
#include "MyAbstractButton.hpp"
#include "Utils.hpp"MyAbstractButton::MyAbstractButton(QWidget *parent): QMainWindow(parent)
{this->setFixedSize(300, 200);this->setStyleSheet(Utils::getStyleSheet());QButtonGroup* pButtonGroup &#61; new QButtonGroup(this);pButtonGroup->setExclusive(true); //按钮间互斥选中&#xff0c;也就是说同时只能有一个被选中状态int xpos &#61; 30;int ypos &#61; 30;for (int i &#61; 0; i <3; &#43;&#43;i){QAbstractButton* pButton &#61; new QPushButton(this);pButton->setGeometry(xpos, ypos, 100, 30); //必须设置Button位置&#xff0c;不然空间就会叠加在一起pButton->setCheckable(true);pButton->setText(QString("Click Me %1").arg(i &#43; 1));pButtonGroup->addButton(pButton);pButtonGroup->setId(pButton, i);ypos &#43;&#61; 40;}connect(pButtonGroup, SIGNAL(buttonClicked(QAbstractButton*)), this, SLOT(onButtonClicked(QAbstractButton*)));
}void MyAbstractButton::onButtonClicked(QAbstractButton *button)
{qDebug() <<"Clicked Button : " <text();
}
注意事项&#xff1a;
1. 创建多个 QPushButton时&#xff0c;一定要设置几何位置
2. 一定要检查信号槽函数是否有效&#xff0c;尤其是带参函数