QTableView垂直调整未刷新的数据大小
QTableView resize vertically data not refreshed
我通过派生QTableView和QAbstractTableModel实现了一个表。这一切似乎都很好,除了当我垂直调整表的大小时,最初不在视图中的行没有显示任何数据。
水平调整大小没有问题,可能是因为我已经重写了resizeEvent()方法,并且正在重新计算列宽,如果表垂直调整大小,我显然不会这样做。
我在模型中使用以下代码将数据添加到表中:
bool DDUTableModel::insertRow(int row, const QModelIndex& parent)
{
beginInsertRows(parent, row, row);
digital_display_list_.append(DigitalDisplayData(path_));
endInsertRows();
return true;
}
resizeEvent()看起来像这样:
void DDUTableView::resizeEvent(QResizeEvent* ev)
{
int num_columns = NUM_ELEMENTS(COLUMN_WIDTHS);
if (num_columns > 0) {
int width = ev->size().width();
int used_width = 0;
// Set our widths to be a percentage of the available width
for (int i = 0; i < num_columns - 1; i++) {
int column_width = (width * COLUMN_WIDTHS[i]) / 100;
this->setColumnWidth(i, column_width);
used_width += column_width;
}
// Set our last column to the remaining width
this->setColumnWidth(num_columns - 1, width - used_width);
}
}
有什么想法吗?
问题出在resizeEvent()上。我还需要调用从中派生的QTableView类中的方法,以在垂直调整大小时强制刷新。修改后的方法如下:
void DDUTableView::resizeEvent(QResizeEvent* ev)
{
int num_columns = NUM_ELEMENTS(COLUMN_WIDTHS);
if (num_columns > 0) {
int width = ev->size().width();
int used_width = 0;
// Set our widths to be a percentage of the available width
for (int i = 0; i < num_columns - 1; i++) {
int column_width = (width * COLUMN_WIDTHS[i]) / 100;
this->setColumnWidth(i, column_width);
used_width += column_width;
}
// Set our last column to the remaining width
this->setColumnWidth(num_columns - 1, width - used_width);
}
QTableView::resizeEvent(ev);
}
相关文章:
- 防止主数据类型C++的隐式转换
- 用于访问容器<T>数据成员的正确 API
- 嵌套在类中时无法设置成员数据
- 使用流处理接收到的数据
- 静态数据成员的问题-修复链接错误会导致编译器错误
- 处理小于cpu数据总线的数据类型.(c++转换为机器代码)
- 在cuda线程之间共享大量常量数据
- C++将文本文件中的数据读取到结构数组中
- 如何在C++中序列化结构数据
- 显示DHT1306温度数据时如何正确刷新Adafruit 11 OLED?
- 如何确保数据刷新到文件 IO (WriteFile()) 上的 HDD(未缓冲)
- 使用可可和C++时刷新屏幕上数据的正确方法是什么
- 线程不刷新数据,无法从标准输入获取所有数据
- 线程不刷新数据,在屏幕中显示数据时出错
- 获取文件数据后刷新 cout 的问题
- 如何在使用FFmpeg写入mp4文件时将缓冲区数据刷新到磁盘
- 将fseek函数在c++中刷新缓冲区中的数据
- 我可以隐式刷新数据吗?
- QTableView垂直调整未刷新的数据大小
- 仅刷新文件元数据