2017-03-16 56 views
0

這是結構簡單,我內的所有QLineEdits'文本:的Qt得到一個佈局

 
QVBoxLayout called switchesLayout_2 
| 
|\_ QHBoxLayout 
| | 
| |\_ QLabel 
|  \_ QEditLine 
| 
|\_ QHBoxLayout 
| | 
| |\_ QLabel 
|  \_ QEditLine 
and so on... 

我需要從switchesLayout_2每QEditLine文本。 我試過這段代碼:

 
    for(int i = 0; i < switchesAmount; i++) { 
     req += " " + ui->switchesLayout_2->itemAt(i)->layout()->itemAt(1)->widget()->text(); 
    } 
我一直收到:'class QWidget'沒有任何成員'text'

我該怎麼辦?謝謝!

+0

你可能想使用'QLineEdit的* PLE = qojbect_cast (用戶界面 - > switchesLayout_2-> itemAt(I) - >佈局() - > itemAt(1) - >部件());'得到指向QLineEdit的指針。然後,如果不是nullptr使用pLE-> text()獲取QString; – drescherjm

+1

***我不斷收到:'class QWidget'沒有名爲'text'的成員***編譯器正確QWidget沒有text()成員。 – drescherjm

+0

它拋出'不能轉換qlineedit到qlineedit初始化 –

回答

1

最簡單的方法是在實際的父控件上使用QObject::findChildren()方法。

const QList<QLineEdit*> lineEdits = ui->widgetThatHasSwitchesLayout_2->findChildren<QLineEdit*>(); 
for (QLineEdit *lineEdit : lineEdits) { 
    req += " " + lineEdit->text(); 
}