0

Qt 複数の tableWidgets がリンクされたアイテムを共有する

こんにちは、Qt には QMainWindow -> centralWidget (QWidget) -> QtabWidget -> 10 個のタブ (QWidgets) -> それぞれに最大 26 個の QtableWidget があります。

サンプル1

サンプル 2

アイデアは、これの代わりに:

    void MainWindow::on_pushButton_Add_Player_clicked()
{
     ui->tableWidget_Players->insertRow(ui->tableWidget_Players->rowCount());
     ui->tableWidget_Defensive->insertRow(ui->tableWidget_Defensive->rowCount());
     .
     . [10 tableWidgets in Total]
     .
     ui->tableWidgetAll->insertRow(ui->tableWidget_Players->rowCount());
}

少ないコードですべての tableWidget に毎回列を追加できる方法はありますか?

もちろん、そこにはありません。実際に知りたいのは、実際には同じアイテムである各アイテムの一部をリンクする方法があることですが、たとえばプレイヤー名が行ごとに同じであるなど、それぞれで繰り返されますしたがって、ユーザーが 1 つの名前を編集した場合は、すべての tableWidget の同じ行で名前を変更する必要があります。

何らかの方法でそれらをリンクする方法はありますか、またはアイテムの変更をシグナルとしてチェックする唯一の方法はありますか?

また、1 つの tableWidget で列ごとに並べ替えた場合、行の新しい配置はすべての tableWidget で同じにする必要があります。

誰でも私を正しい方向に向けることができますか?私が持っている唯一の考えは、ItemChangedの信号を使用することです. より良い方法はありませんか?

お時間をいただきありがとうございます。

4

1 に答える 1

0

あなたのテーブルが同じデータである場合は、いくつかの素晴らしいモデルビューコントローラーアクションを実行することを検討する必要があります(仕事に応募するときにそのフレーズをたくさん言ってください、彼らはそれが好きです;))

これを行うには、tablemodelを作成する必要があります。そしてTableViewウィジェット。このように、データは共有されるため、1 つの場所にのみ存在します。すべてのTableViews はデータを表示するだけです。QSortedFilterProxyを見て、特定のビューのデータをフィルター処理することができます (私はこれを使用したことがないのでわかりません)。そうすれば、playerModelどこかに自分の場所があり、各ビューには、たとえばアクティブなプレーヤーのみを表示するproxyModelがあります。

于 2015-07-02T23:44:31.383 に答える