QT - 如何从QVector <qcombobox *>获取SIGNAL“currentIndexChanged”

时间:2017-08-25 18:35:22

标签: c++ qt

我想从选定的QComboBox中获取QString文本。当我在QComboBox上选择索引时,我想在QcomboBox上单击所需的索引后,从所选索引中获取QString。

我已经研究过这个,

  1. Qt QCombobox currentIndexChanged signal
  2. 但尚未找到解决问题的方法,

    QVector<QComboBox*> cboxes;
     for (int i =0; i< 40 ; i++)
    {
    QComboBox *box = new QComboBox();
    cboxes.append(box);
    }
        for(int i = 0; i < 40; i++)
        {
            connect(cboxes[i], SIGNAL(currentIndexChanged(const QString &text)), this, SLOT(comboBoxAdjusted_Changed(QString)));
        }
    

    comboBoxAdjusted_Changed函数

    void DialogSettings::comboBoxAdjusted_Changed(QString text)
    {
        std::cout << text.toStdString() << endl;
    }
    

    我有尝试,但每次我更改组合框索引时,都不会给出输出。

    for (int i =0; i< 40 ; i++)
        {
        connect(cboxes[i], static_cast<void(QComboBox::*)(const QString &)>(&QComboBox::currentIndexChanged),
                            [=](const QString &text){
                            std::cout << text.toStdString() << endl;
        });
    

    我该怎么办?

1 个答案:

答案 0 :(得分:2)

我看到信号语法缺少函数输入参数。

以下是currentIndexChanged

的两个有效信号
void    currentIndexChanged(int index)
void    currentIndexChanged(const QString &text)

如果您需要处理index,请尝试以下操作。

 for(int i = 0; i < 40; i++)
 {
     connect(cboxes[i], static_cast<void(QComboBox::*)(int)>(&QComboBox::currentIndexChanged),[=](int index){ /* YOUR CODE */ });
 }