qt 富文本排版求助

2016-11-07 18:02:33 +08:00
 NxnXgpuPSfsIT

qt 富文本排版求助

尝试了很久都没能解决,特别做了整理,万望各位不吝赐教!

问题

  1. 如何使用 qt 富文本在同一行中左右分别放置内容
  2. 如何正确的组合 QTextFrame 等内容

如何使用 qt 富文本在同一行中左右分别放置内容

简而言之,需要在 QLabel 的一行里左对齐放置一些文字,右对齐放置一些文字。

关于限定 QLabel :

目前的尝试:

如何正确的组合 QTextFrame 等内容

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 都可以。

尝试了很久都没能解决,万望各位不吝赐教!

3015 次点击
所在节点    Python
2 条回复
fqzz
2016-11-07 18:58:09 +08:00
转成 html 显示
NxnXgpuPSfsIT
2016-11-07 19:11:30 +08:00
@fqzz 感谢您的回复,可以麻烦简单的贴一下代码吗?
提问前我已经将可以想到的 html 实现都做了尝试,但 qt 的富文本只支持部分的 html4 ,没能找到解决方案。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/318771

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX