- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
QHeaderView 的 saveState/restoreState 有问题。我的应用程序中有几个 QTableViews。 QTableView 保存并恢复它的 QHeaderView 设置,但对于某些 QTableView,我想将移动的部分顺序从 beeing 中排除到 ini 文件中。
这意味着,saveState 应该保存已排序的列、排序指示符、列宽,但如果用户移动了列,则不会。
有没有办法不保存移动的列?
谢谢。
问候,摩尼
最佳答案
没有简单的方法可以做到这一点。我建议接下来这样:
使用 vector 存储移动 header 的 logicalIndexes
。
QVector<int> last;
使用sectionMoved
信号检测移动并将logicalIndex
存储在向量中:
connect( ui->tableView->horizontalHeader(),static_cast<void (QHeaderView::*)(int,int,int)>(&QHeaderView::sectionMoved),[=](int logicalIndex, int oldVisualIndex, int newVisualIndex)
{//with lambda
//you can also provide shecking is current logicalIdnex already exist in vector
last.push_back(logicalIndex);
});
语法如此复杂丑陋是因为QHeaderView
中还有一个sectionMoved
,所以有必要。如果您不知道新语法,请使用旧语法:
connect( ui->tableView->horizontalHeader(), SIGNAL(sectionMoved(int,int,int)), this, SLOT(yourSlot(int,int,int)));
但是创建 yourSlot(int,int,int)
并在这个插槽中执行 last.push_back(logicalIndex);
。
当你想要saveState
时,隐藏你存储在向量中的logicalIndex
的所有部分并保存:
QByteArray array;
for(int i = 0; i < last.size(); i++)
{
ui->tableView->horizontalHeader()->hideSection(last.at(i));
}
array = ui->tableView->horizontalHeader()->saveState();
如果您想使用新语法和 lambda,请将 CONFIG += c++11
添加到 pro 文件。
关于qt - 从 QHeaderView saveState/restoreState 中排除移动的列顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26401126/
我正在使用 Qt 5.7,并且我有一个开始时没有行的 QWidgetTable。当我插入第一行时,表格的 verticalHeader(类型为 QHeaderView)的宽度从 0 变为 15。然而,
我想保存tableview的列顺序和每列是否显示。看起来 QHeaderView::saveState() 和 QHeaderView::restoreState() 做了我想要的。 我读过 docu
我正在尝试编辑 QTreeWidget 标题的样式。 我发现我可以使用 QHeaderView::section 编辑它,然后编辑背景、颜色、边框... 但是,我想单独编辑专门的列标题。我在 docu
我有一个 QTableView带有隐藏的水平标题 table->horizontalHeader()->hide(); 如您所见,由于列宽,中间列中的文本被剪裁了。 要查看文本,用户需要调整列的大小,
我有一个自定义标题 QProduitCartoHeaderView在继承自 QHeaderView 的类中定义. 在我的标题中,我有一个复选框用于选中/取消选中同一列中的所有复选框 对于所有数据行。
我有带有水平 headerView 的 QTableView 对象,(我隐藏了垂直的)。我将 setShowGrid(false) 设置为从 qtableView 中删除网格,但是如何删除 QTabl
我在 QTableWidget 中对 QHeaderView 进行子类化,以提供隐藏/显示部分的自定义功能。有没有办法从标题 View 中获取部分的文本?我知道我可以在表格范围内做到这一点,但这不是我
我为我的应用程序使用 cleanlooks 样式,它最适合我想要的外观和感觉。 令人恼火的是 QHeaderView(例如 QTableWidget 的水平标题)在 Unix 主机上运行时,不会在各部
我尝试在我的 QTableWidget 中修改我的 QHeaderView(水平)的文本。 第一个问题:是否可以像 QTableWidgetItem 一样将其设置为可编辑的? 第二个问题:如果不可以,
我有一个稍微自定义的 QTableView,显示我开发的模型。当我指示 TableView 调整 ColumnToContents 的大小时,我最终在列文本的两侧各有一个大约 20 像素的额外缓冲区。
我正在创建一个应用程序来保存对象发送服务的数据。 我用 Qt 创建了它,这是一个类型为 QStandardItemModel 的模型,我想用 QtableView 显示它。 但是 QtableView
我有一个带有自定义 QHeaderView 的自定义 QTableView 模型,以便呈现用于对表格内容执行“全选”功能的复选框。 在我的 header 重载的 paintSection() 函数中,
我有一个 QTableWidget,其最后一列包含可变长度的文本。 我想根据该部分的大小将 QHeaderView 的最后一部分拉伸(stretch)或调整其内容。如果内容大小不超过小部件中的剩余空间
我想知道如何访问 sectionsInserted 插槽。我需要访问该方法的参数。因为它是一个 protected 插槽,我认为我需要从 QHeaderView 继承。现在,即使我从 QheaderV
我已经编写了具有多列的 QTreeView 的后代。我想创建一个弹出菜单,当用户右键单击列标题时会出现该菜单。为此,我尝试从 QTreeView 捕获信号,但 QTreeView 似乎没有在标题上发出
我使用 QTableview 和 QAbstractTableModel 创建了一个表。我使用 QHeaderView 添加了一些垂直标题。在其中一个标题单元格中,我想使用委托(delegate) .
我正在尝试使用样式表为我的 QTableWidget 自定义标题的外观。我这样做: QHeaderView::section { background-color: transparent;
我使用的是 PyQt4,这段代码运行良好。 self.table.horizontalHeader().setResizeMode(1, QHeaderView.Stretch) 它正在拉伸(stre
QHeaderView 部分在调整大小时可能会超出 View (向右)。也就是说,我可以将一个部分的大小调整得过大,而其他部分将在右侧消失。 是否可以限制这个?比如设置header的最大宽度。 我在表
这个问题是this post的进一步发展并且是不同的,尽管看起来与 this one 相似. 我正在尝试重新实现 QHeaderView::paintSection,以便从模型返回的背景得到尊重。我试
我是一名优秀的程序员,十分优秀!