我知道有类似的问题,但没有一个有解决方案。 Qt文档为QAbstractScrollArea :: setViewportMargins()指定了这个:
“将滚动区域周围的边距设置为左,上,右和底。这对于具有”锁定“行和列的电子表格等应用程序非常有用。边际空间为空白;将小部件放在未使用的区域。 请注意,此函数经常由QTreeView和QTableView调用,因此边距必须由QAbstractScrollArea子类实现。此外,如果要在项目视图中使用子类,则不应调用此函数。 默认情况下,所有边距均为零。“
我能够通过调用setViewportMargins为冻结行创建空间,但我无法弄清楚如何在该空间中放置控件。有谁知道怎么做?
答案 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()));
}