我正在创建一个应用程序,其中几乎所有的UI元素都是动态创建的......其中包括从用户输入的数字生成的QLineEdit+ QPushButton对列表.按钮打开一个Dialog窗口来查找文件,QLineEdits用于数据验证/编辑,所有这些都必须在数据库中结束.有时他只需输入3个值,有时10个.
QLineEdit* warstwaEdit[iloscWarstw]; //iloscWarstw - number user inputs
QPushButton* warstwaDialog[iloscWarstw];
for(int i=0; i<iloscWarstw; i++) {
warstwaEdit[i] = new QLineEdit;
warstwaEdit[i]->setFixedHeight(25);
warstwaEdit[i]->setFixedWidth(400);
ui->scrollAreaWidgetContentsFormularzWarstw->layout()->addWidget(warstwaEdit[i]);
warstwaDialog[i] = new QPushButton;
warstwaDialog[i]->setFixedWidth(100);
warstwaDialog[i]->setFixedHeight(30);
warstwaDialog[i]->setText("Dodaj element");
ui->scrollAreaWidgetContentsFormularzWarstw->layout()->addWidget(warstwaDialog[i]);
mapperDialog->setMapping(warstwaDialog[i], i);
connect(warstwaDialog[i], SIGNAL(clicked()), mapperDialog, SLOT(map()));
}
Run Code Online (Sandbox Code Playgroud)
但我无法让Dialog将String传递给"他的"标签.在Dialog的插槽中,我正在尝试使用
ui->scrollAreaWidgetContentsFormularzWarstw->layout()->warstwaEdit[i]->setText(filepath);
Run Code Online (Sandbox Code Playgroud)
但显然QLayout ()(也scrollAreaWidgetContentsFormularzWarstw)有一个成员"warstwaEdit".qDebug()在该槽中使用表示i正在传递正确的.TreeDump表示ScrollAreaWidgetContentsFormularzWarstw是父级.
我有点不知所措.我第一次遇到Qt时得到了一个非常奇怪的应用......
您用来访问窗口小部件的语法似乎不正确.
由于您将小部件存储在数组中,因此您无需通过布局实际访问它们.只需在您的阵列上直接访问它们:
warstwaEdit[i]->setText(filepath);
Run Code Online (Sandbox Code Playgroud)
另一种方法是命名您的小部件:
warstwaEdit[i]->setObjectName("some name");
Run Code Online (Sandbox Code Playgroud)
然后用以下方式访问它们find:
QLineEdit* lineEdit = ui->scrollAreaWidgetContentsFormularzWarstw->findChild<QLineEdit*>("some name");
lineEdit->setText(filePath);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1074 次 |
| 最近记录: |