データのマトリックスがあり、QStringList の QList として格納しただけで、すべて同じ数の QString が含まれています。このように、データはほとんどスプレッドシートのように見えます。
QTableView を使用して、このデータをユーザーに表示します。
void DialogwitQTableView::setData(QList<QStringList> s)
{
/* Create the data model */
// 1. give it some headers
QStandardItemModel model = new QStandardItemModel(s.count(),25,this); //x Rows and 25 Columns
model->setHorizontalHeaderItem(0, new QStandardItem(QString("Column 1")));
model->setHorizontalHeaderItem(1, new QStandardItem(QString("Column 2")));
// ...
model->setHorizontalHeaderItem(24, new QStandardItem(QString("Column 25")));
// 2. populate the model with the data
for(int i = 0; i < s.count() ; i++)
{
for(int j = 0; j < s[i].count() ; j++)
model->setItem(i,j,new QStandardItem(QString(s[i][j])));
}
ui->NameOfTheTableView->setModel(model);
}
ここで、ユーザーがデータの一部を変更したい場合は、ダイアログボックスの QTableView をダブルクリックして、必要なものを編集します。
その編集をデータでも取得するにはどうすればよいですか? その新しい情報で QStringList をどのように適応させることができますか?
ドキュメントを検索すると、ほとんどの場合、データベースにリンクされた QTableView が見つかりますが、これがメモリ内の単純なデータ構造でどのように機能するかわかりません。QtDesigner に移動して、TableView の [スロットに移動] をクリックしても、「datachanged」などのスロットが表示されません。
何かご意見は?私はかなり行き詰まりを感じており、おそらく何かを概説していると思われます。どんなヒントでも大歓迎です。