• 3092阅读
  • 3回复

动态按钮如何调用 [复制链接]

上一主题 下一主题
离线果冻33
 

只看楼主 倒序阅读 楼主  发表于: 2021-03-09

    /* 动态生成按钮到 horizontalLayout */
    on_actionDelBtn_triggered();//先删除已有按钮
    QPushButton *btn[Number];
    for (int i = 0; i < Number; ++i)
    {
        btn = new QPushButton(QString::number(i + 1),this);
        btn->setGeometry(10 + 10 * i,5,2,8);
        btn->setStyleSheet("background-color: rgb(170, 0, 255);");
        ui->horizontalLayout->addWidget(btn);
        connect(btn,SIGNAL(clicked()),this,SLOT(on_actionMeas_triggered()));//动态生成连接函数
    }

问题:以上代码生成的按钮如何用代码调用clicked()?用代码实现界面上类似ui->btn->click();这样的调用。
离线liudianwu

只看该作者 1楼 发表于: 2021-03-09
你把它存到一个QList<QPushButton *> listBtn 中不就行了额
欢迎关注微信公众号:Qt实战/Qt入门和进阶(各种开源作品、经验整理、项目实战技巧,专注Qt/C++软件开发,视频监控、物联网、工业控制、嵌入式软件、国产化系统应用软件开发) QQ:517216493  WX:feiyangqingyun  QQ群:751439350
离线20091001753

只看该作者 2楼 发表于: 2021-03-09
(づ ̄ 3 ̄)づ
离线果冻33

只看该作者 3楼 发表于: 2021-03-09

   QList<QPushButton*> btnlist;//保存动态生成的按钮。

/* 动态生成按钮到 horizontalLayout */
    on_actionDelBtn_triggered();//先删除已有按钮
    QPushButton *btn[Number];
    for (int i = 0; i < Number; ++i)
    {
        btn = new QPushButton(QString::number(i + 1),this);
        btn->setGeometry(10 + 10 * i,5,2,8);
        btn->setStyleSheet("background-color: rgb(170, 0, 255);");
        btnlist.append(btn);
        ui->horizontalLayout->addWidget(btn);
        connect(btn,SIGNAL(clicked()),this,SLOT(on_actionMeas_triggered()));//动态生成连接函数
    }

下面才是我想要的结果。用代码调用clicked()
调用:
btnlist[3]->click();//调用第4个按钮
btnlist->setFocus();//动态按钮获得焦点

本来想了另一个办法是再增加一个带参数的connect连接来实现。貌似和目前这个办法差不多要多写几句代码。明天再验证一下。

感谢两位版主帮助。
快速回复
限100 字节
 
上一个 下一个