相关疑难解决方法(0)

PyQt:如何在内容更改时处理窗口小部件的自动调整大小

当内容发生变化时,我遇到了qt4小部件大小的问题.

我将用两个简单的场景来说明我的问题:

场景1:

我有一个QLineEdit小部件.有时,当我使用QLineEdit.setText()更改其内容时,单行字符串不再适合当前大小的窗口小部件.我必须选择小部件并使用箭头键在两个方向上滚动字符串才能看到所有内容.

场景2:

我有一个QTextEdit小部件.有时,当我使用QTextEdit.setHtml()更改其内容时,呈现的HTML内容不再适合当前大小的窗口小部件.小部件开始显示水平和/或垂直滚动​​条,我可以使用它们滚动HTML内容.

在这种情况下我想要的是有一些逻辑来决定在内容更改后,新内容是否会再适合窗口小部件并自动增加窗口小部件大小以便一切都适合.

这些方案是如何处理的?我正在使用PyQt4.

编辑:在阅读了评论和第一个答案(提到在窗口小部件中输入内容)后,我再次回答了这个问题.发现一个可怕的拼写错误令我不高兴.当我写QTextEdit时,我的意思是QTextBrowser,我为误导你而道歉.那就是:我有一个小部件,它呈现我正在改变的HTML代码,我希望小部件增长到足以显示所有内容而不需要滚动条.

至于QLineEdit而不是QLabel - 我去了QLineEdit因为我注意到我无法用QLabel从QLabel中选择文本进行复制.使用QLineEdit是可能的.

c++ python qt qt4 pyqt4

11
推荐指数
1
解决办法
1万
查看次数

像QTextEdit这样的QWidget会自动将其高度包装到其内容中吗?

我正在创建一个带有一些QTextEdit小部件的表单.

QTextEdit的默认高度超过单行文本,并且当内容的高度超过QTextEdit的高度时,它会创建滚动条来滚动内容.

我想重写此行为以创建一个QTextEdit,而不是将其高度包装到其内容.这意味着默认高度将是一行,而在包装或输入新行时,QTextEdit会自动增加其高度.每当内容高度超过QTextEdit的高度时,后者不应创建滚动条,而只是增加高度.

我该怎么做呢?谢谢.

python qt4 pyqt4 qtextedit

7
推荐指数
2
解决办法
9059
查看次数

如何调整 QTextEdit 以适应其内容

我正在开发一个 Qt 应用程序,我试图找到一种方法来使用 QTextEdit 作为label没有滚动条的长文本。在我的 ui 中,我有一个QScrollArea,在它里面我想放置几个QTextEdit小部件,我只想在里面使用滚动QScrollArea。问题是,无论我如何尝试调整大小,QTextEdit它似乎都有最大高度和文本剪切,即使我手动设置大小并QTextEdit::size返回正确的值。

我做了同样的事情,QLabel它工作正常,但在这种情况下,我需要一些仅在QTextEdit.

我找到了这篇文章: 调整 QT 的 QTextEdit 以匹配文本高度:maximumViewportSize()

给出的答案如下:

我已经解决了这个问题。为了让它工作,我必须做两件事:

  1. 向上走小部件层次结构并确保所有大小策略都有意义,以确保如果任何子小部件想要变大/变小,那么父小部件将希望成为相同的东西。
  2. 这是修复的主要来源。事实证明,由于 QTextEdit 位于 QScrollArea 中的主要小部件 QFrame 内,因此 QScrollArea 有一个约束,除非“widgetResizable”属性为真,否则它不会调整内部小部件的大小。文档在这里:http : //doc.qt.io/qt-4.8/qscrollarea.html#widgetResizable-prop. 在我尝试使用此设置并使其工作之前,文档对我来说并不清楚。从文档来看,这个属性似乎只处理主滚动区域想要调整小部件大小的时间(即从父滚动到子滚动)。这实际上意味着如果滚动区域中的主要小部件想要调整大小(即从子到父),则必须将此设置设置为 true。因此,故事的寓意是 QTextEdit 代码在覆盖 sizeHint 方面是正确的,但 QScrollArea 忽略了从主框架的 sizeHint 返回的值。

问题是我不知道如何访问QTextEdit's QScrollArea以启用widgetResizable. 任何人都可以解释我如何实现这一目标或建议一种不同的调整大小QTextEdit以完全适合其内容的方法吗?

c++ qt resize qtextedit qscrollarea

5
推荐指数
1
解决办法
1万
查看次数

标签 统计

c++ ×2

pyqt4 ×2

python ×2

qt ×2

qt4 ×2

qtextedit ×2

qscrollarea ×1

resize ×1