首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何知道在Qt中点击了哪个按钮?

如何知道在Qt中点击了哪个按钮?
EN

Stack Overflow用户
提问于 2016-06-21 07:40:16
回答 1查看 10.4K关注 0票数 8

我的表单中有8个按钮(btn1、btn2、btn3、.、btn8)。每个按钮的文本都来自一个数据库。我在数据库中定义了8个函数。这些是我的领域:

代码语言:javascript
复制
ID, Text, Active  

当用户按下每个按钮时,我应该将函数名保存在数据库中。一开始,所有的按钮都是隐藏的。在页面加载中,我从数据库读取数据以显示函数按钮的文本;如果函数按钮不活动,则该按钮也是不可见的。

这是我的密码:

代码语言:javascript
复制
ui->btn1->hide();
ui->btn2->hide();
ui->btn3->hide();
ui->btn4->hide();
ui->btn5->hide();
ui->btn6->hide();
ui->btn7->hide();
ui->btn8->hide();
 QSqlQueryModel *lst=database->getFunctions();
 QString st;

 QStringList btnlst;
 for(int i = 0; i < lst->rowCount(); ++i)
 {
     if(lst->record(i).value(2).toInt()==1)//ACTIVE
     {
         btnlst<<(lst->record(i).value(3).toString());//text
     }
 }
 for(int i = 0; i < btnlst.count(); ++i)
 {
     QPushButton *btn=this->findChild<QPushButton>(st.append(QString::number(i)));
     btn->setText(btnlst[i]);
     btn->show();
     connect(btn,SIGNAL(clicked()),this,SLOT(Function()));
 }  

在该代码中,我将所有活动函数保存在一个列表中,然后获取列表计数。例如,如果列表的长度为3,那么btn1btn2btn3应该以我的形式显示,其他的应该隐藏。然后,我将所有的按钮clicked()信号连接到一个名为Function()的插槽上。

我想使用用户在我的表单中按下的按钮的文本。如何找到被单击的按钮,以及如何获取该按钮的文本?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-21 07:53:00

在您的插槽Function()中,只需检索您单击的按钮,感谢QObject::发件人(),然后您就可以使用Q旺斯按钮::text()获取该按钮的文本。

代码语言:javascript
复制
void yourClass::Function()
{
    QPushButton* buttonSender = qobject_cast<QPushButton*>(sender()); // retrieve the button you have clicked
    QString buttonText = buttonSender->text(); // retrive the text from the button clicked
}
票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37938304

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档