2016-09-30 14 views
0

Qtが初めてです。 Ubuntu 15.04でQt Creator 3.1.1をQt 5.4.1に基づいて使用する。2つのウィンドウ間の通信方法は?

私は、右側の追加、編集、削除、およびエクスポートボタンを使ってメイン画面に従業員をリストアップするアプリケーションを構築しようとしています。追加ボタンと編集ボタンをクリックすると、別の子ウィンドウが開き、それぞれのアクションが実行されます。

ユーザが従業員を子ウィンドウから追加/編集/削除すると、メインウィンドウ上の従業員リストを更新したいと考えています。

私は、画面に応じてコードを区切って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

あなたが任意の間で通信するのと同じ方法から復帰した後、その後、ちょうど更新をトリガ2つのオブジェクト - Qtの信号とスロットのメカニズムを使用します。 – dtech

答えて

1

あなたのセカンダリウィンドウは、メインウィンドウのスロットに接続し、そこにあるコードをそのスロットで実行するシグナルを発するだけです。

あるいは、これらの追加のウィンドウが(メインウィンドウのオープン中との相互作用からユーザーをブロックする)モーダルダイアログがある場合、彼らはexec()通話

関連する問題