私のフォームには8つのボタンがあります(btn1、btn2、btn3、...、btn8)。各ボタンのテキストはデータベースからのものです。私は自分のデータベースに8つの関数を定義します。これらは私のフィールドです:Qtでどのボタンがクリックされたかを知るには?
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()
というスロットに接続します。
私のフォームでユーザーが押したボタンのテキストを使用したいと思います。 どのボタンがクリックされたか、どのようにこのボタンのテキストを取得するかを見つける方法?あなたのスロットFunction()
で
、 「QSignalMapper」http://doc.qt.io/qt-5/qsignalmapper.htmlが役に立つかもしれません – Felix