查看完整版本: [-- 动态按钮如何调用 --]

QTCN开发网 -> Qt基础编程 -> 动态按钮如何调用 [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

果冻33 2021-03-09 18:18

动态按钮如何调用


    /* 动态生成按钮到 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 2021-03-09 18:34
你把它存到一个QList<QPushButton *> listBtn 中不就行了额

20091001753 2021-03-09 18:42
[attachment=22285]

果冻33 2021-03-09 22:48

   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连接来实现。貌似和目前这个办法差不多要多写几句代码。明天再验证一下。

感谢两位版主帮助。


查看完整版本: [-- 动态按钮如何调用 --] [-- top --]



Powered by phpwind v8.7 Code ©2003-2011 phpwind
Gzip disabled