【问题标题】:QPlainTextEdit - absolute sizeQPlainTextEdit - 绝对大小
【发布时间】:2015-03-20 02:18:33
【问题描述】:

我需要获取QPlainTextEdit 的绝对高度,就好像它不在QAbstractScrollArea 中一样。我已经花了大约一个小时才找到它。我搜索了QPlainTextEdit、QTextDocument 和QAbstractScrollArea,尝试了每个名称中包含大小的属性。

我希望除了将blockCount() 乘以blockBoundingRect(firstVisibleBlock()).height() 并添加到内容偏移量之外,还有其他方法。 (块大小相同。)

提前谢谢你。

【问题讨论】:

标签: c++ qt qplaintextedit


【解决方案1】:

我想这就是你要找的东西:http://qt-project.org/forums/viewreply/21633/

QScrollArea 有一个视口。视口是可视区域的大小。所以如果你的QScrollArea 被命名为foo,你会想要这样做:

 foo.viewport().size();

这将返回您想要的QSize。

【讨论】:

  • 我不想要可见,我想要绝对 - 超出视口的范围。
  • @LogicStuff 这应该保留在您的原始对象中。所以如果你的QPlainTextEdit 被命名为bar 你应该可以这样做:bar.size();
  • 那是一样的(我想加上水平滚动条的高度)。
  • @LogicStuff 好像我们有误会,视口 + 滚动条 = QScrollArea.size()。 bar.size() 与视口和 QScrollArea.size() 不同...除非您刚刚对小部件的大小感到非常幸运/不幸。
  • 我认为 OP 是在询问如何获得“小部件需要多高才能显示所有内容而不垂直滚动”——而不是当前小部件的大小。
【解决方案2】:

你可以在你的派生类中这样做:

int TextEditor::contentHeight() const
{
    return contentOffset().y() + fontMetrics().lineSpacing() * blockCount();
}

【讨论】:

    猜你喜欢
    • 2017-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-11
    • 2017-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多