gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 08:20:14 24 4
gpt4 key购买 nike

我的表单中有 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,那么 btn1btn2btn3 应该显示在我的表单中,其他的应该保持隐藏。然后我将所有按钮 clicked() 信号连接到一个名为 Function() 的插槽。

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

最佳答案

在您的插槽 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
}

关于qt - 如何知道在 Qt 中点击了哪个按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37938304/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com