我想在Qt中实现一个文本字段,该字段复制堆栈溢出上的"标签"字段(提交问题时)。某些关键字将被小部件替换,如果我退格一个小部件,它应该替换为为创建该小部件而键入的文本。我怎么能完成这样的事情?谢谢。
您可以从继承 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);
}
}
}