0

我想通过从文件中读取的纯文本构建。该文件具有以下外观:

Line1

Line3

Line2 完全是空的,即使没有空格。然后html文件看起来像

<!DOCTYPE HTML PUBLIC><html>
<head>
<style type='text/css'>#editor { white-space: pre; }</style>
</head>
<body style="font-family: 'Segoe Print'; font-size:14pt">

<p id='editor', style=" margin-top:0px; margin-bottom:0px; margin-left:0px">Line1</p>
<p id='editor', style=" margin-top:0px; margin-bottom:0px; margin-left:0px"></p>
<p id='editor', style=" margin-top:0px; margin-bottom:0px; margin-left:0px">Line3</p>

</body></html>

带有“p id=...”的代码行很重要。它们的中间行被忽略,因此只显示了两行。那是因为在结束 /p 之前没有文本,对吗?我当然可以输入一个“”(空格),但这是一个肮脏的解决方案......

我通过在下一行插入“margin-top:Xem”而不是“margin-top:0px”找到了一个中途解决方案。X 是“1”。现在的问题是:

当程序发现有 4 个空行时,我如何为 X 输入任何其他值,例如 4?

编辑:这是我尝试过的。没有改变...

<!DOCTYPE HTML PUBLIC><html>
<head>
<style type='text/css'>p.editor { white-space: pre; min-height:1em; }</style>
</head>
<body style="font-family: 'Segoe Print'; font-size:14pt">

<p class='editor' style=" margin-top:0em; margin-bottom:0px;">Line1</p>
<p class='editor' style=" margin-top:0em; margin-bottom:0px;"></p>
<p class='editor' style=" margin-top:0em; margin-bottom:0px;">Line3</p>

</body></html>
4

2 回答 2

2

几点:

  1. ID 必须是唯一的。将它们更改为使用类。
  2. 您只需要空格来分隔元素属性,而不是逗号。
  3. 您应该使用 CSS 而不是内联样式。

如果您希望p显示一个元素而不包含任何文本,只需给它一个最小高度。

<p class="editor">Line 1</p>
<p class="editor"></p>
<p class="editor">Line 3</p>
p.editor {
    white-space: pre;
    margin:0;
    min-height:16px;
}

默认情况下p,元素默认为内部内容的高度。没有内容,就没有高度。指定一个最小高度意味着空p元素总是有一些高度,不管它是否有内容。

JSFiddle 示例

但是,如果您希望空行可复制,则需要修改 HTML 本身以使用不间断空格( &nbsp;) 而不是将元素留空:

<p class="editor">Line 1</p>
<p class="editor">&nbsp;</p>
<p class="editor">Line 3</p>

有了这个,你就不需要额外的最小高度,因为不间断的空间会遵循元素的字体大小。

JSFiddle 示例

于 2013-07-15T14:52:08.140 回答
0

解决方案适合我:

<!DOCTYPE HTML PUBLIC>
<html>
<head>
<style type='text/css'>h1 { white-space: pre; min-height:1em; font-family: arial;
    font-size:8pt; color:green; margin-bottom:0px; margin-top:0px}
</style>
</head>
<body> 

<h1>Line1</h1>
<h1></h1>
<h1>Line3</h1>

</body></html>

将其插入相位,它可以工作。将其设置为 QTextBrowser,它不会。但这是另一个问题

于 2013-07-15T16:07:49.943 回答