Qt C – 访问动态创建的Widget(QLineEdit)
发布时间:2020-12-16 09:57:40 所属栏目:百科 来源:网络整理
导读:我正在创建一个应用程序,其中几乎所有的UI元素都是动态创建的……其中包括从用户输入的数字生成的QLineEdit QPushButton对的列表.按钮打开一个Dialog窗口来查找文件,QLineEdits用于数据验证/编辑,所有这些都必须在数据库中结束.有时他只需输入3个值,有时10个
我正在创建一个应用程序,其中几乎所有的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())); } 但我无法让Dialog将String传递给“他的”标签.在Dialog的插槽中,我正在尝试使用 ui->scrollAreaWidgetContentsFormularzWarstw->layout()->warstwaEdit[i]->setText(filepath); 但显然QLayout()(或scrollAreaWidgetContentsFormularzWarstw)都有一个成员“warstwaEdit”.在该槽中使用的qDebug()表示正在传递正确的i. TreeDump表示ScrollAreaWidgetContentsFormularzWarstw是父级. 我有点不知所措.我第一次遇到Qt时得到了一个非常奇怪的应用…… 解决方法
您用来访问窗口小部件的语法似乎不正确.
由于您将小部件存储在数组中,因此您无需通过布局实际访问它们.只需在您的阵列上直接访问它们: warstwaEdit[i]->setText(filepath); 另一种方法是命名您的小部件: warstwaEdit[i]->setObjectName("some name"); 然后使用find访问它们: QLineEdit* lineEdit = ui->scrollAreaWidgetContentsFormularzWarstw->findChild<QLineEdit*>("some name"); lineEdit->setText(filePath); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |