2017-05-15 24 views
0

我遇到了一個我無法解決的問題。我有一個父(在QTDesigner中添加)和子(由代碼添加)佈局。我想補充QLineEdit的和Qlabel小部件子佈局,然後我這個佈局添加到父之一:在另一個裏面的佈局中訪問lineEdit

lbl = new QLabel(this); 
currentResistorText += tr("Resistor") + tr("#") + QString::number(resistorCounter); 
lbl->setText(currentResistorText); 
newResistorLayout = new QHBoxLayout(); 
lineEdit = new QLineEdit(this); 
newResistorLayout->addWidget(lbl); 
ui->resistorsLayout->addRow(newResistorLayout); 

我怎樣才能得到newResistorLayout內部訪問lineEdit元素?
我正在使用Qt 5.8。

回答

0

調查這些三個功能:

QList<T> qFindChildren(const QObject *obj, const QString &name = QString()); 

QList<T> qFindChildren(const QObject *obj, const QRegExp &regExp) 

T qFindChild(const QObject *obj, const QString &name = QString()); 

你可以這樣寫代碼:

QList<QLineEdit *> edits = qFindChildren<QLineEdit *>(newResistorLayout); 

然後你就可以遍歷編輯,做你喜歡什麼。此外,如果對象具有您知道的名稱(通過setObjectName設置),則可以指定名稱以找到,正好是您正在查找的名稱

注意:通過設計器創建的GUI通常會在所有小部件上都有名稱,uic工具將發出代碼來設置所有對象名稱。

+0

感謝您的幫助。它是這樣的:QList widgets = ui-> centralwidget-> findChildren (); – Vladimir

相關問題