I decided to go with QPlainTextEdit, frankly, none of the three choices were any good, even the most basic thing -- syntax highlighting -- was inadequate, so I realized I'd have to build my own. Which meant QPlainTextEdit.
Attached is a screenshot of what I have so far. The colors are fully themeable.
Some nice features that were not present in any of the three choices:
1) Line numbers with current line highlighting in the numbers column
2) Themeablity
3) Decent syntax highlighting. Notice in the screenshot how:
- CSS inside HTML <style> tags is highlighted
- Invalid HTML is detected with a red underline and a tooltip telling you what is wrong
- non-breaking spaces are highlighted with a slightly different background
- The contents of title, heading, bold and italics tags are rendered using the appropriate bold/italic fonts
- Namespace prefixes are highlighted
Since I'd never built an editor before, this was a fun learning experience