Qt Reference Documentation

Common Rich Text Editing Tasks

# Supported HTML Subset

Qt's text widgets are able to display rich text, specified using a subset of HTML 4 markup. Widgets that use QTextDocument, such as QLabel and QTextEdit, are able to display rich text specified in this way.

## Using HTML Markup in Text Widgets

Widgets automatically detect HTML markup and display rich text accordingly. For example, setting a label's text property with the string `"<b>Hello</b> <i>Qt!</i>"` will result in the label displaying text like this: Hello Qt!

When HTML markup is used for text, Qt follows the rules defined by the HTML 4 specification. This includes default properties for text layout, such as the direction of the text flow (left-to-right) which can be changed by applying the `dir` attribute to blocks of text.

## Supported Tags

The following table lists the HTML tags supported by Qt's rich text engine:

Tag | Description | Comment
--- | --- | ---
`a` | Anchor or link | Supports the `href` and `name` attributes. Note that the `:visited` selector is one of those that is not supported by the rich text engine. See below for a list of others.
`address` | Address |
`b` | Bold |
`big` | Larger font |
`blockquote` | Indented paragraph |
`body` | Document body | Supports the `bgcolor` attribute, which can be a Qt color name or a `#RRGGBB` color specification.
`br` | Line break |
`center` | Centered paragraph |
`cite` | Inline citation | Same as `i`.
`code` | Code | Same as `tt`.
`dd` | Definition data |
`dfn` | Definition | Same as `i`.
`div` | Document division | Supports the standard block attributes.
`dl` | Definition list | Supports the standard block attributes.
`dt` | Definition term | Supports the standard block attributes.
`em` | Emphasized | Same as `i`.
`font` | Font size, family, and/or color | Supports the following attributes: `size`, `face`, and `color` (Qt color names or `#RRGGBB`).
`h1` | Level 1 heading | Supports the standard block attributes.
`h2` | Level 2 heading | Supports the standard block attributes.
`h3` | Level 3 heading | Supports the standard block attributes.
`h4` | Level 4 heading | Supports the standard block attributes.
`h5` | Level 5 heading | Supports the standard block attributes.
`h6` | Level 6 heading | Supports the standard block attributes.
`head` | Document header |
`hr` | Horizontal line | Supports the `width` attribute, which can be specified as an absolute or relative (`%`) value.
`html` | HTML document |
`i` | Italic |
`img` | Image | Supports the `src`, `source` (for Qt 3 compatibility), `width`, and `height` attributes.
`kbd` | User-entered text |

`meta`

Meta-information

If a text encoding is specified using the `meta` tag, it is picked up by Qt::codecForHtml(). Likewise, if an encoding is specified to QTextDocument::toHtml(), the encoding is stored using a `meta` tag, for example:

     <meta http-equiv="Content-Type" content="text/html; charset=EUC-JP" />

`li` | List item |
`nobr` | Non-breakable text |
`ol` | Ordered list | Supports the standard list attributes.
`p` | Paragraph | Left-aligned by default. Supports the standard block attributes.
`pre` | Preformated text |
`qt` | Qt rich-text document | Synonym for `html`. Provided for compatibility with earlier versions of Qt.
`s` | Strikethrough |
`samp` | Sample code | Same as `tt`.
`small` | Small font |
`span` | Grouped elements |
`strong` | Strong | Same as `b`.
`style` | Style sheet | Allows styling information to be included with the rich text. A limited subset of CSS syntax can be used to change the appearance of the text.
`sub` | Subscript |
`sup` | Superscript |
`table` | Table | Supports the following attributes: `border`, `bgcolor` (Qt color names or `#RRGGBB`), `cellspacing`, `cellpadding`, `width` (absolute or relative), and `height`.
`tbody` | Table body | Does nothing.
`td` | Table data cell | Supports the standard table cell attributes.
`tfoot` | Table footer | Does nothing.
`th` | Table header cell | Supports the standard table cell attributes.
`thead` | Table header | If the `thead` tag is specified, it is used when printing tables that span multiple pages.
`title` | Document title | The value specified using the `title` tag is available through QTextDocument::metaInformation().
`tr` | Table row | Supports the `bgcolor` attribute, which can be a Qt color name or a `#RRGGBB` color specification.
`tt` | Typewrite font |
`u` | Underlined |
`ul` | Unordered list | Supports the standard list attributes.
`var` | Variable | Same as `i`.

## Block Attributes

The following attributes are supported by the `div`, `dl`, `dt`, `h1`, `h2`, `h3`, `h4`, `h5`, `h6`, `p` tags:

- `align` (`left`, `right`, `center`, `justify`)
- `dir` (`ltr`, `rtl`)

## List Attributes

The following attribute is supported by the `ol` and `ul` tags:

- `type` (`1`, `a`, `A`, `square`, `disc`, `circle`)

## Table Cell Attributes

The following attributes are supported by the `td` and `th` tags:

- `width` (absolute, relative, or no-value)
- `bgcolor` (Qt color names or `#RRGGBB`)
- `colspan`
- `rowspan`
- `align` (`left`, `right`, `center`, `justify`)
- `valign` (`top`, `middle`, `bottom`)

## CSS Properties

The following table lists the CSS properties supported by Qt's rich text engine:

Property | Values | Description
--- | --- | ---
`background-color` | <color> | Background color for elements
`background-image` | <uri> | Background image for elements
`color` | <color> | Text foreground color
`font-family` | <family name> | Font family name
`font-size` | [ small | medium | large | x-large | xx-large ] | <size>pt | <size>px | Font size relative to the document font, or specified in points or pixels
`font-style` | [ normal | italic | oblique ] |
`font-weight` | [ normal | bold | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900 ] | Specifies the font weight used for text, where `normal` and `bold` are mapped to the corresponding QFont weights. Numeric values are 8 times the equivalent QFont weight values.
`text-decoration` | none | [ underline || overline || line-through ] | Additional text effects
`font` | [ [ <'font-style'> || <'font-weight'> ]? <'font-size'> <'font-family'> ] | Font shorthand property
`text-indent` | <length>px | First line text indentation in pixels
`white-space` | normal | pre | nowrap | pre-wrap | Declares how whitespace in HTML is handled.
`margin-top` | <length>px | Top paragraph margin in pixels
`margin-bottom` | <length>px | Bottom paragraph margin in pixels
`margin-left` | <length>px | Left paragraph margin in pixels
`margin-right` | <length>px | Right paragraph margin in pixels
`padding-top` | <length>px | Top table cell padding in pixels
`padding-bottom` | <length>px | Bottom table cell padding in pixels
`padding-left` | <length>px | Left table cell padding in pixels
`padding-right` | <length>px | Right table cell padding in pixels
`padding` | <length>px | Shorthand for setting all the padding properties at once.
`vertical-align` | baseline | sub | super | middle | top | bottom | Vertical text alignment. For vertical alignment in text table cells only middle, top, and bottom apply.
`border-color` | <color> | Border color for text tables.
`border-style` | none | dotted | dashed | dot-dash | dot-dot-dash | solid | double | groove | ridge | inset | outset | Border style for text tables.
`background` | [ <'background-color'> || <'background-image'> ] | Background shorthand property
`page-break-before` | [ auto | always ] | Make it possible to enforce a page break before the paragraph/table
`page-break-after` | [ auto | always ] | Make it possible to enforce a page break after the paragraph/table
float | [ left | right | none ] | Specifies where an image or a text will be placed in another element. Note that the `float` property is only supported for tables and images.
`text-transform` | [ uppercase | lowercase ] | Select the transformation that will be performed on the text prior to displaying it.
`font-variant` | small-caps | Perform the smallcaps transformation on the text prior to displaying it.
`word-spacing` | <width>px | Specifies an alternate spacing between each word.

## Supported CSS Selectors

All CSS 2.1 selector classes are supported except pseudo-class selectors such as `:first-child`, `:visited` and `:hover`.