2016-09-30 90 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()電話

相關問題