• 4843阅读
  • 1回复

[提问]我怎么给动态生产的组件添加信号和槽呢 [复制链接]

上一主题 下一主题
离线atmats
 
只看楼主 正序阅读 楼主  发表于: 2012-07-26
void Demo::on_pushButton_clicked(){  
    QGridLayout * mainLayout= new QGridLayout(ui->groupBox);
   QLineEdit *tl;    QPushButton *tb;
    for(int i=0;i<3;i++)  
  {    
        tl=new QLineEdit(ui->groupBox);
        QString str("防区%1");
       tb=new QPushButton(str.arg(i),ui->groupBox);
//  tb=new QPushButton(tr("防区%1").arg(i),ui->groupBox);
//可以在此连接button事件处理信号槽
------这个地方怎么给每个组件添加信号和槽呢?
    mainLayout->addWidget(tl, i, 0);
    mainLayout->addWidget(tb, i, 1);
}  
  ui->groupBox->setLayout(mainLayout);}
离线kimtaikee

只看该作者 1楼 发表于: 2012-07-27
代码这个乱!
你可以把动态生成组建的过程重构成一个函数,然后放到循环体中

重构的函数
  1. QPushButton *CreateFxxkingButton(const QString& strText,QWidget* parent)
  2. {
  3.      QPushButton* button = new QPushButton(strText,parent);
  4.      connect(button,SIGNAL(clicked()),this,SLOT(YourFxxkingSlot()));
  5.      return button;
  6. }

调用处
  1. for(int hit = 0 ; hit <= FOREVER; hit++)
  2. {
  3.     CreateFxxkingButton(tr("Kick Ass %1").arg(hit),FxxkingGroupBox);
  4. }

P.S. 下次发帖上代码时把代码格式化一下


快速回复
限100 字节
 
上一个 下一个