尝试了很久都没能解决,特别做了整理,万望各位不吝赐教!
简而言之,需要在 QLabel 的一行里左对齐放置一些文字,右对齐放置一些文字。
关于限定 QLabel :
目前的尝试:
QTextFrame 等内容在拼接过程中会产生多余的行。
以以下简化过的需求为例:
实现代码基本如下:
import sys
from PyQt4.QtGui import *
msgList = ['Hi', 'Hello', 'How are you', 'Fine thank you and you im fine too']
app = QApplication(sys.argv)
ted = QTextEdit()
cursor = ted.textCursor()
for i, msg in enumerate(msgList):
frameFormat = QTextFrameFormat()
frameFormat.setBackground(QColor(227, 239, 255)
if i % 2 else QColor(129, 134, 144))
blockFormat = QTextBlockFormat()
blockFormat.setLeftMargin(10)
cursor.movePosition(QTextCursor.End)
cursor.insertFrame(frameFormat)
cursor.insertBlock(blockFormat)
cursor.insertText(msg)
mainWindow = QWidget()
layout = QVBoxLayout()
layout.addWidget(ted)
mainWindow.setLayout(layout)
mainWindow.show()
sys.exit(app.exec_())
产生问题:
QTextFrame 和 QTextBlock 都会产生一行计划之外的空行,分别对应图中 1 和 2 。
由于 V2EX 的回复代码的问题,可能要麻烦使用 gist 等方式分享代码。
使用 c++或者 python 都可以。
尝试了很久都没能解决,万望各位不吝赐教!
1
fqzz 2016-11-07 18:58:09 +08:00
转成 html 显示
|
2
NxnXgpuPSfsIT OP @fqzz 感谢您的回复,可以麻烦简单的贴一下代码吗?
提问前我已经将可以想到的 html 实现都做了尝试,但 qt 的富文本只支持部分的 html4 ,没能找到解决方案。 |