我是第一次从代码创建小部件,而不是通过创建者。它读入一个文本文件并使用材料名称(复选框启用或不启用)和厚度lineEdit填充QScrollArea小部件,如图所示。制作的小部件数量与文本文件中的条目数相对应。
我使用以下功能创建按钮和复选框:
void overlayers::newField(QString material, bool checked, double thickness)
{
//Create new checkbox.
QCheckBox * checkbox = new QCheckBox(material);
checkbox->setChecked(checked);
//Create new field.
QLineEdit * line = new QLineEdit(QString::number(thickness));
//Create horizontal layout.
QHBoxLayout * layout = new QHBoxLayout();
layout->addWidget(checkbox,Qt::AlignLeft);
layout->addWidget(line,Qt::AlignRight);
//Add horizontal layout to vertical.
scrollLayout->addLayout(layout);
}
在类标题中定义了QVBoxLayout scrollLayout。
我在完成整个对话框后意识到,我必须从字段和复选框标志中获取值以保存数据,但我不知道如何遍历所有复选框和lineEdits来获取text()和checkedState()变量!
我觉得我编程错误,并且有更好的方法。是否可以按照我的方式做到这一点?如果没有,一个更好的程序员将如何做到这一点:创建可变数量的小部件并能够访问他们的数据? QVector有点什么?
谢谢堆!