Dar*_*ren 10 qt qt4 qtableview
我正在尝试做一些看起来应该非常简单的事情,但是我越是调查它,我想知道它是否是一个Qt错误.
所以,我有一个QTableView可以按用户喜欢显示/隐藏的列.在我初始化表之后,我调用了一个自定义restoreColumns()方法,该方法隐藏QTableView::hideColumn()了用户在上次打开GUI时隐藏的列(使用).
当用户尝试显示上次运行GUI时用户隐藏的列时,就会出现问题.调用适当的信号/插槽并运行但由于某种原因QTableView未更新以显示列.
奇怪的是,任何已经显示的列(上次运行GUI时用户都没有隐藏)都没有隐藏/显示的问题.
有什么想法吗?谢谢!
这是我如何初始化表...
m_tableModel = new mytablemodel();
m_tableView = new mytableview();
m_tableView->setItemDelegate(m_tableDelegate);
m_tableView->setModel(m_tableModel);
Run Code Online (Sandbox Code Playgroud)
restoreColumns()方法的肉:
for (int i=0; i<horizontalHeader()->count(); i++) {
// load size to restore previous width
...
horizontalHeader()->resizeSection(i, width); // restore width
// load previous column position
...
// restore column order
int currentVisualIndex = horizontalHeader()->visualIndex(i);
if (currentVisualIndex != visualIndex)
horizontalHeader()->moveSection(currentVisualIndex, visualIndex);
// load previous hidden/shown state
...
if (columnHidden) {
hideColumn(i);
} else {
showColumn(i);
}
}
Run Code Online (Sandbox Code Playgroud)
下面是一些显示/隐藏其中一列的示例代码.
void mytableview::showAColumn(bool checked) {
// mytableview is a subclass of qtableview
if (checked)
showColumn(COLUMN_A); // COLUMN_A is an enum for the column
else
hideColumn(COLUMN_A);
}
Run Code Online (Sandbox Code Playgroud)
哪个连接到QAction可以从菜单和上下文菜单访问QHeaderView的QTableView.
connect(action, SIGNAL(toggled(bool)), this, SLOT(showAColumn(bool)));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3932 次 |
| 最近记录: |