1、解决如何快速的添加按钮
在qt中,通常我们喜欢一个按钮添加一个信号与槽,但是这样写太过浪费时间。要是多个按钮那不是要写30个信号与槽,说实话,我不太喜欢这样。
在ui中,只要拖动按钮,会自动生成按钮的名字,一般都是pushButton,pushButton_2,pushButton_3这样,这样写多了,别人看你的代码与ui都很繁杂,这样写就显得很low,别人看很不方便,你自己写模块功能,按钮多了,每次都要切到ui看一样,这样都很烦。
在qt中,有一个类叫按钮组,提供按钮编号的功能,把一类按钮可以放在一个组中,这样一个组一个模块,方便管理与减少代码量。
使用QT的类:
#include<QButtonGroup>
声明按钮组:
QButtonGroup *rightBtnGroup; //右侧
实例化按钮组:
rightBtnGroup = new QButtonGroup();
添加多个按钮:
for (int i = 37; i <= 43; ++i) {
QString buttonName = QString("pushButton_%1").arg(i);
QPushButton *button = findChild<QPushButton *>(buttonName); // 在ui中查找按钮
if (button) {
rightBtnGroup->addButton(button, i); // 将按钮添加到按钮组中,并指定 ID
}
}
注意:ui中,一般默认第一个按钮是pushButton,改成pushButton_1,格式保持一致。
信号与槽
connect(rightBtnGroup, &QButtonGroup::idClicked, this, &xxxx::rightButtonGroupClicked); //右侧按钮
槽函数
void yourclass::rightButtonGroupClicked(int num)
{
if(num==37)
{
xxx
}
else if(num==38)
{
xxx
}
else if(num==39)
{
xxx
}
else if(num==40)
{
xxx
}
else if(num==41)
{
xxx
}
else if(num==42)
{
xxx
else if(num==43)
{
xxx
}
}
2、好处
1、减少代码量
2、一类按钮可以放在一个按钮组中,写一些界面跳转功能,比较简单的小功能,真的很方便。
3、按钮组除了可以添加pushButton,也可以添加ToolButton等,设置单选,也可以设置多选