我的表格中有8个按钮(btn1,btn2,btn3,...,btn8)。每个按钮的文本来自数据库。我在我的数据库中定义了8个函数。这些是我的领域:
ID, Text, Active
当用户按下每个按钮时,我应该将功能名称保存在数据库中。首先,所有按钮都被隐藏。在页面加载中,我从数据库中读取数据以显示功能按钮的文本;如果功能按钮未激活,则该按钮也是不可见的。
这是我的代码:
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,那么btn1
,btn2
和btn3
应该在我的表单中显示,其他应该保持隐藏状态。然后,我将所有按钮clicked()
信号连接到名为Function()
的插槽。
我想使用用户在表单中按下的按钮文本。 如何找到点击了哪个按钮,以及如何获取此按钮的文字?
答案 0 :(得分:3)
在您的广告位Function()
中,只需检索您点击的按钮,感谢QObject::sender(),然后您可以使用QAbstractButton::text()获取该按钮的文字:
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
}