【问题标题】:How to lose selection focus of a QTextEdit?如何失去 QTextEdit 的选择焦点?
【发布时间】:2016-01-05 11:47:07
【问题描述】:

我有一个只读的QTextEdit。我可以选择文本并复制它。 我需要做的:当用户处于选择模式(选择文本)时,如果他离开该区域(仍然按住鼠标左键)小部件必须失去焦点,选择焦点也必须结束。当鼠标退出越界时,我希望类似于鼠标释放。我试图设置这个:

rootWidget->clearFocus();
rootWidget->close();
rootWidget->releaseMouse();

但即使在视觉上小部件似乎没有焦点,我仍然会收到我的小部件的TextEdit::mouseMoveEvent()

我还尝试将焦点设置到虚拟小部件。虚拟小部件获得焦点,但我的 textedit 坐下获得 mouseMoveEvent()。

如何在不释放鼠标按钮的情况下完全失去小部件的焦点?

感谢您的任何建议!

【问题讨论】:

  • QWidget 有方法grabMouse()。尝试使用您的虚拟小部件调用它。然后拨打releaseMouse()

标签: qt selection qwidget qtextedit


【解决方案1】:

您可以使用QWidget::setFocus() 将焦点放在其他内容上。您可能应该在更改焦点之前清除选择。

【讨论】:

  • 但是如何清除选择呢?这是我的问题:)
  • 抱歉。您可以尝试 2 件事:QTextEdit::moveCursor 或者您创建一个新的 QTextCursor 并使用 QTextEdit::setTextCursor。不要使用QTextEdit::textCursor(),因为它只会返回它的一个副本(之后您需要调用 setTextCursor)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-01-02
  • 1970-01-01
  • 1970-01-01
  • 2012-11-05
  • 2012-07-19
  • 1970-01-01
  • 2012-08-03
相关资源
最近更新 更多