信号编辑文本已更改为可编辑的QComboBox设置光标位置在设置编辑文本之后的末尾

Signal editTextChanged for editable QComboBox sets cursor position at end after setEditText

本文关键字:编辑 文本 位置 设置 之后 置光标 QComboBox 信号      更新时间:2023-10-16
  1. 有可编辑的QComboxBox。它可以很好地处理所有功能,除了我们在 end 以外的位置编辑/插入/删除字符串字符的情况。例如"你好",如果我们删除"e"光标到达末尾。
  2. 当前 editTextChanged(string( 信号处理是这样的,在它里面 setEditText(string( 被调用,这导致光标到达末尾。
  3. 已经浏览了其他一些堆栈溢出论坛,人们建议使用 -> 保存初始光标位置,然后调用 setEditText 然后将光标重置为保存位置。这看起来不错,但看起来像解决方法解决方案。
  4. 想知道是否有其他方法i( 在失去焦点时调用 setEditText。(QFocusEvent 将不起作用,因为派生类继承自 QObject 而不是 QWidget(或ii( 调用 comboBox->lineEdit 功能来执行 setEditText。在下面尝试过,但它不起作用connect(qcomboBox->lineEdit((, SIGNAL(editDone(((, this, SLOT(textChanged((((;

以下是我浏览过的链接1(编辑完成可编辑的组合框2( 保存光标位置

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

QComboBox 收到的所有事件都将首先通过您的课程,您可以决定如何处理它们(如果有的话(。这使您能够从另一个类(您的类(更改一个类的行为(即 QComboBox(,而无需子类化 QComboBox。