如何在QTableView中创建冻结的页脚行

时间:2014-02-12 18:06:31

标签: qt qtableview

我知道有类似的问题,但没有一个有解决方案。 Qt文档为QAbstractScrollArea :: setViewportMargins()指定了这个:

“将滚动区域周围的边距设置为左,上,右和底。这对于具有”锁定“行和列的电子表格等应用程序非常有用。边际空间为空白;将小部件放在未使用的区域。 请注意,此函数经常由QTreeView和QTableView调用,因此边距必须由QAbstractScrollArea子类实现。此外,如果要在项目视图中使用子类,则不应调用此函数。 默认情况下,所有边距均为零。“

我能够通过调用setViewportMargins为冻结行创建空间,但我无法弄清楚如何在该空间中放置控件。有谁知道怎么做?

1 个答案:

答案 0 :(得分:1)

您应该查看code editor example

基本上,您只需将小部件放在视口边距上即可。调整QTableView对象大小时,还必须调整窗口小部件的大小。这当然是在QTableView对象的resize event中完成的。

这是在示例中完成的:

void CodeEditor::resizeEvent(QResizeEvent *e)
{
    QPlainTextEdit::resizeEvent(e);

    QRect cr = contentsRect();
    lineNumberArea->setGeometry(QRect(cr.left(), cr.top(), lineNumberAreaWidth(), cr.height()));
}