私のアプリケーションには次のようなコードがあります:
....
QStandardItemModel* authorModel = getAuthorModel(author);
// Create result tab
QTableView* tblView = new QTableView();
tblView->setModel(authorModel);
controller.queryAuthor(author, authorModel);
qDebug() << authorModel->setHeaderData(0, Qt::Horizontal, QVariant("Author Name"), Qt::DisplayRole);
qDebug() << authorModel->setHeaderData(1, Qt::Horizontal, QVariant("Author Id"), Qt::DisplayRole);
int tabIdx = ui->mainTabWidget->addTab(tblView, author);
ui->mainTabWidget->setCurrentIndex(tabIdx);
tblView->setColumnHidden(1, true);
このコードは複数回呼び出され、さまざまなテーブルビューを作成します。authorModelが空の場合、headerdataの設定も失敗します。また、setColumnHiddenも失敗し、データが入力されると、デフォルトの数値ヘッダーが表示され、列1が表示されます。両方のqDebugステートメントはfalseを返します。
ただし、同じ入力モデルを使用して新しいテーブルビューを作成すると、新しいビューの列1は問題なく非表示になり、ヘッダーが適切に設定されます。両方のqDebugステートメントがtrueを返します。
問題は何ですか?それをどのように軽減できますか?