0

これまたは例に関するドキュメントを見つけるのに苦労しています。

誰かがQComboBoxで現在選択されているインデックスのQVariantにアクセスする方法を具体的に教えてもらえますか

 QComboBox * combo = new QComboBox();
 combo->addItem("Bla1", QVariant(1));
 combo->addItem("Bla2", QVariant(2));
 combo->addItem("Bla3", QVariant(3));
 combo->addItem("Bla4", QVariant(4));
 connect(combo, SIGNAL(currentIndexChanged(int)), this, slot(HANDLEITMAN(int))

そしてもちろん、ソースのどこに

 void TheCooler::HANDLEITMAN(int index)
 {
      //What do I do with index?
      //sender()?
 }
4

2 に答える 2

3

まず、comboのメンバーを作成するか、メンバーとして持つクラスにTheCooler入れます。どういうわけかそれが利用可能でない限り、あなたはデータを得ることができません、そしてこれはそれをする論理的な方法です。それならそれはただHANDLEITMANcomboTheCooler::HANDLEITMAN

 void TheCooler::HANDLEITMAN(int index)
 {
      QVariant data = combo->itemData(index);
 }
于 2012-10-23T21:03:38.667 に答える
2

コンボをクラスのメンバーにしたくない場合は、トリガー信号を送信した(この場合は)へのポインターを返す関数をTheCooler使用できます。sender()QObjectcurrentIndexChanged(int)

void TheCooler::HANDLEITMAN(int index)
{
    QComboBox * combo = qobject_cast< QComboBox * >(sender());
    if (combo == 0)
        return; // something wrong happened

    QVariant data = combo->itemData(index);
}

がnullの場合comboは、スロットを自分で呼び出そうとしたか、ではないクラスによって発行されたシグナルに接続した可能性がありQComboBoxます。

于 2012-10-23T21:07:06.487 に答える