我正在嘗試根據以下方法定期呼叫QTableView的方法重繪 基于資料的資料。一旦我得到資料,我在我的模型中更新它(通過一個成員函式),然后呼叫希望用當前資料更新它。但是,對(我也嘗試過)的呼叫沒有按預期作業,并且沒有更新 - 保持在其首次呼叫值。請注意,我的資料可能會完全改變,這不僅僅是插入額外行的問題。get_dataQTimerrefreshrefresh_tabletableViewtableView->update()tableView->repaint()tableView
void MainWindow::DataDisplay(QWidget *tab) {
auto tableView = create_table(tab,...);
auto timer = new QTimer(this);
auto model = new MyModel();
connect(timer, &QTimer::timeout, [tableView, model, this]() {
const auto data = get_data();
model->refresh(data);
refresh_table(model, tableView);
});
timer->start(1000);
}
auto refresh_table(MyModel *model,
QTableView *tableView) {
tableView->setModel(model);
tableView->update(); // does not work
}
Qt重繪 模型以更新關聯模型的規范方法TableView是什么?
uj5u.com熱心網友回復:
規范的方法是讓您的模型發出dataChanged()信號。任何關聯的 QTableView 都將接收該信號并通過重新查詢模型以獲取新值并更新其表的關聯單元格來回應。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/509851.html
標籤:C qtqt6
上一篇:拖拽時閃退
