我用两种形式制作了一个应用程序。
当我按第二个表单中的保存按钮时,它将更新数据库记录,并返回到第一个表单。我已经通过Signal-Slot使用以下代码连接了两种形式:
打印机数据
signals:
void btnSavePressed(QString printerName);
PrinterData.cpp
UiMainWindow frmMain;
connect(this,SIGNAL(btnSavePressed(QString)),&frmMain,SLOT(refreshSaved( QString )));
emit btnSavePressed(ui->ledit_druckerName->text());
this->hide();
UiMainWindow.h
public slots:
void refreshSaved(QString printerName);
UiMainWindow.cpp
void UiMainWindow::refreshSaved(QString printerName){
qDebug()<<"Updated: "<<printerName;
show_list(); //<<<<<<<<<<<<<<<<<<<<<< this function
}
show_list
void UiMainWindow::show_list (){
QList<DB_Printers_lvs> list;
DB_Printers_lvsTransporter t("LVS");
QString wc;
this->setCursor(Qt::WaitCursor);
wc = QString("where 1=1 order by nam_printer");
if (!t.load_dbPrinters_lvs_wc(&list,wc))
{
log()<< "get printers failed"<< wc << t.getLastError();
this->setCursor(Qt::ArrowCursor);
return;
}
ui.treeWidget->clear();
foreach (DB_Printers_lvs db, list)
{
QTreeWidgetItem *item = new QTreeWidgetItem(0);
printer_to_qtreewidgetitem(item, db);
ui.treeWidget->insertTopLevelItem(ui.treeWidget->topLevelItemCount(), item);
}
ui.treeWidget->header()->resizeSections(QHeaderView::ResizeToContents);
ui.bow_search->apply();
this->setCursor(Qt::ArrowCursor);
}
当我按下第二个表单上的按钮时,第一个表单显示我看到Updated
带有打印机名称的调试文字,但是问题是如何调用或启动此功能show_list()
?
感谢帮助。
您在UiMainWindow
此处创建第二个实例的问题:
UiMainWindow frmMain;
然后,您将信号与第二个实例连接起来,称为信号槽,但是您甚至没有显示MainForm的第二个实例。取而代之的是,您应该UiMainWindow
在创建DruckerData
表格后立即将信号和插槽连接起来。不幸的是,您的问题中没有此代码,因此我无法显示确切的位置。这应该是这样的:
//Inside UiMainWindow
DruckerData *data = new DruckerData(this);
connect(data, SIGNAL(btnSavePressed(QString)),this,SLOT(refreshSaved( QString )));
data->show();
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句