隐藏QLineEdit闪烁光标

Ash*_*esh 6 qt cursor caret hide qlineedit

我正在研究QT v5.2

我需要QLineEdit永久隐藏闪烁的光标(插入符号).但与此同时,我希望它QLineEdit是可编辑的(因此readOnly和/或设置可编辑的false不适合我).

我已经在更改QLineEdit焦点时的背景颜色,因此我将知道QLineEdit正在编辑哪个小部件.根据我的要求,光标(闪烁文本光标)显示不应该在那里.

我试过了styleSheets,但我无法隐藏光标( {color:transparent; text-shadow:0px 0px 0px black;} )

有人可以告诉我如何实现这一目标?

Eze*_*zee 10

没有标准的方法可以做到这一点,但您可以使用setReadOnly隐藏光标的方法.当您调用此方法时,它会禁用键的处理,因此您需要强制它.继承自QLineEdit并重新实现keyPressEvent.

LineEdit::LineEdit(QWidget* parent)
 : QLineEdit(parent)
{
  setReadOnly(true);      
}

void LineEdit::keyPressEvent(QKeyEvent* e)
{
  setReadOnly(false);
  __super::keyPressEvent(e);
  setReadOnly(true);
}
Run Code Online (Sandbox Code Playgroud)