2016-05-15 70 views
0

我是QT新手。我有35个push_buttons在一个数组中。我想为这个按钮阵列写单个函数。该功能只会设置字符串,对于每个按钮都不同。像“10,10”下一个像“15,15”等 我已经看到了我能够理解的signalmappers。在QT中为按钮阵列制作单一功能

给出简单和容易的想法。

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; 
+0

请使用代码块而不是内联代码 – tmthydvnprt

+0

您只是想将现有的'ui->'按钮映射到数组吗? – DaveyLaser

回答

0

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

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

您可以通过循环做多个按钮。

0

如果按钮已经存在于您的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); 
} 
+0

但是,如何设置单个字符串变量为每个按钮具有不同的值,所有按钮的单一功能? –

+0

1个字符串,35个按钮?或35个字符串和35个按钮? – DaveyLaser

+0

或者...像...查找表? 'std :: map '? – DaveyLaser