2017-08-25 34 views
0

我想從選定的QComboBox中獲取QString文本。當我在QComboBox上選擇一個索引時,我想從QcomboBox中點擊所需的索引後,從所選索引中獲取QString。QT - 如何從QVector獲得SIGNAL「currentIndexChanged」<QComboBox*>

我研究這個,

  1. Qt QCombobox currentIndexChanged signal

但還沒有找到一種方法來解決它,

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; 
    }); 

我該怎麼辦?

+0

什麼問題?你想得到什麼?,也請顯示comboBoxAdjusted_Changed – eyllanesc

+1

QSignalMapper可能是你想要的,作爲一個瘋狂的猜測... – hyde

+0

@eyllanesc我編輯我的問題。 – Khalif21

回答

1

我看到信號語法缺少函數輸入參數。

下面是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 */ }); 
} 
+0

好的,我會試試 – Khalif21

+0

我已經試過了。我編輯了我的問題。 – Khalif21

+0

做完「試驗和錯誤」後,它就起作用了。 – Khalif21