2016-09-30 89 views
0

我是Qt的新手。在Ubuntu 15.04上使用基于Qt 5.4.1的Qt Creator 3.1.1。如何在两个窗口之间进行通信?

我试图建立一个应用程序,在主屏幕上列出员工,在右侧添加,编辑,删除和导出按钮。点击添加和编辑按钮,打开另一个子窗口并执行相应的操作。

一旦用户从子窗口添加/编辑/删除员工,我想刷新主窗口上的员工列表。

我不想在单个文件中编写完整的代码,因此根据屏幕分隔代码。但我不确定如何从子窗口访问父窗口UI元素。所以我使用下面的代码从子文件中实现了这一点。

QTableWidget *tableWidget = this->parent()->findChild<QTableWidget *>(); 
QSqlQuery query; 
    query.exec("SELECT * FROM employees order by id DESC"); 

    tableWidget->setRowCount(0); 
    tableWidget->setRowCount(query.size()); 
    tableWidget->setColumnWidth(0, 60); 
    tableWidget->setColumnWidth(1, 200); 
    tableWidget->setColumnWidth(2, 150); 
    tableWidget->setColumnWidth(3, 100); 

    while(query.next()) { 

     tableWidget->setItem(columnCount, 0 ,new QTableWidgetItem(query.value(0).toString())); 
     tableWidget->setItem(columnCount, 1 ,new QTableWidgetItem(query.value(1).toString())); 
     tableWidget->setItem(columnCount, 2 ,new QTableWidgetItem(query.value(2).toString())); 
     tableWidget->setItem(columnCount, 3 ,new QTableWidgetItem(query.value(3).toString())); 

     columnCount++; 
    } 

click here for screenshot of application

这是正确的做法来实现这一功能?请指导我。谢谢。

+0

你任何之间沟通不同的方式返回两个对象 - 使用Qt的信号和插槽机制。 – dtech

回答

1

您的辅助窗口只能发出一个信号,您将其连接到主窗口中的某个插槽,并且该插槽将执行您在该处的代码。

或者,如果这些额外的窗口是模态对话框(从主窗口同时开放互动阻止用户),然后就触发更新后,他们从exec()电话

相关问题