可编辑QComboBox的信号editTextChanged在setEditText之后设置光标位置

时间:2016-11-15 14:03:51

标签: c++ qt cursor qcombobox

  1. 有可编辑的QComboxBox。它处理所有功能,除了我们编辑/插入/删除字符串以外的位置的字符串的情况。 例如“你好”,如果我们删除'e'光标到达终点。
  2. 目前editTextChanged(字符串)信号处理是这样的,其中调用了setEditText(string),导致光标到达终点。
  3. 已经浏览了其他人建议使用的stackoverflow论坛 - >保存初始光标位置,然后调用setEditText,然后将光标重置为保存位置。这看起来不错,但看起来像是解决方法。
  4. 想知道是否可以采用其他方式 i)当焦点丢失时调用setEditText。(QFocusEvent不起作用,因为派生类是从QObject而不是QWidget继承的)或 ii)调用comboBox-> lineEdit功能来执行setEditText。 尝试下面,但它不起作用 connect(qcomboBox-> lineEdit(),SIGNAL(editingFinished()),this,SLOT(textChanged()));
  5. 以下是我经历过的链接 1)editFinished for editable comboBox 2)saving cursor postion

1 个答案:

答案 0 :(得分:0)

您可以在QComboBox上安装事件过滤器,并以这种方式检测其焦点输入/输出事件。在文档中查找QObject :: installEventFilter;它非常简单易用。

QComboBox收到的所有活动都将首先通过您的课程,如果有的话,您可以决定如何处理它们。这使您能够在不对QComboBox进行子类化的情况下,从另一个类(您的#)更改一个类的行为(即QComboBox)。