我遇到了一个无法解决的问题。我有一个父(在QT设计器中添加(和子(通过代码添加(布局。我将QLineEdit
和Qlabel
小部件添加到子布局,然后将此布局添加到父布局:
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。
看看这三个函数:
QList<T> qFindChildren(const QObject *obj, const QString &name = QString());
QList<T> qFindChildren(const QObject *obj, const QRegExp ®Exp)
T qFindChild(const QObject *obj, const QString &name = QString());
你可以像这样编写代码:
QList<QLineEdit *> edits = qFindChildren<QLineEdit *>(newResistorLayout);
然后,您可以循环编辑并执行您喜欢的操作。此外,如果对象具有您知道的名称(通过 setObjectName
设置(,则可以指定名称以准确查找要查找的名称。
注意:通过设计器创建的 GUI 通常在所有小部件上都有名称,uic 工具将发出代码来设置所有对象名称。