将QWidgets放在文本字段

时间:2016-05-21 19:55:41

标签: qt qt5

我想在Qt中实现一个文本字段,它复制stackoverflow上的“Tags”字段(提交问题时)。某些关键字将被小部件替换,如果我退格一个小部件,它应该被替换为创建该小部件的文本。我怎么能做到这样的事情?感谢。

1 个答案:

答案 0 :(得分:1)

您可以从继承QWidget并实现KeyPress和KeyRelease事件开始。基本上模仿QLineEdit小部件。因此,您可能需要查找可重用的代码以避免大量工作,例如继承QLineEdit并覆盖paintEvent()。

然后,在paintEvent中,使用画家渲染非小部件文本和小部件。

伪代码:

SomeWidget::paintEvent(QPaintEvent *)
{
    QPainter painter(this);

    foreach (object ; objectsToDraw) {
        if (isText) {
            painter.drawText();
        } else if (isWidget) {
            widget.render(&painter);
        }
    }
}