实现QT中按钮阵列的单一功能



我是QT的新手。我在一个数组中有35个按钮。我想为这个按钮数组编写一个函数。该函数只会设置字符串,每个按钮都不同。比如"10,10"下一个音比如"15,15"等等。我见过我能理解的信号映射器。

给出简单明了的想法。

for (int i = 0; i < 35;i++){
    PB << new QPushButton();
}
ui->setupUi(this);
PB[0]=ui->pB_00;PB[1]=ui->pB_01;PB[2]=ui->pB_02;PB[3]=ui->pB_03;
PB[4]=ui->pB_04;PB[5]=ui->pB_05;PB[6]=ui->pB_06;PB[7]=ui->pB_07;
PB[8]=ui->pB_08;PB[9]=ui->pB_09;PB[10]=ui->pB_10;PB[11]=ui->pB_11;
PB[12]=ui->pB_12;PB[13]=ui->pB_13;PB[14]=ui->pB_14;PB[15]=ui->pB_15;
PB[16]=ui->pB_16;PB[17]=ui->pB_17;PB[18]=ui->pB_18;PB[19]=ui->pB_19;
PB[20]=ui->pB_20;PB[21]=ui->pB_21;PB[22]=ui->pB_22;PB[23]=ui->pB_23;
PB[24]=ui->pB_24;PB[25]=ui->pB_25;PB[26]=ui->pB_26;PB[27]=ui->pB_27;
PB[28]=ui->pB_28;PB[29]=ui->pB_29;PB[30]=ui->pB_30;PB[31]=ui->pB_31;
PB[32]=ui->pB_32;PB[33]=ui->pB_33;PB[34]=ui->pB_34;

您可以添加一个只接受两个参数的函数。第一个参数是访问哪个按钮。下一个将是要设置的文本。示例:

void Parent::changeText(int button, QString text)
{
    PB[button].setText(text);
}

您可以循环执行多个按钮。

如果按钮已经存在于ui元素中,则当前循环不需要创建new QPushButtons。您可以在代码中插入按钮,而不用使用设计器来插入按钮。

// Your button array, this is likely a private member in your class.
QList< QPushButton* > PB;
for( auto i = 0; i < 35; ++i )
{
    // Create new button with textValue == "i" 
    auto button = new QPushButton{ QString::number( i ) };
    // Store in your list
    PB << button;
    // Add to ui
    ui->containerQWidget->layout()->addWidget( button );
}

最新更新