c++ - 从单词选择中排除字符的方法

标签 c++ qt qt4

我正在扩展 QPlainTextEdit。

当我双击包含管道字符 ex 的单词时:{"foo"|upper|reverse} 整个文本被包围。

我想排除管道字符“|”从选择中不知道该怎么做 有没有办法改变 QTextCursor::WordUnderCursor 的行为?

我希望该字符的行为与空格相同,或者更一般地作为不可选择的字符。

如 QT 文档中所述:

Selects the word under the cursor. If the cursor is not positioned within a string of selectable characters, no text is selected.

最佳答案

目前没有官方方法可以更改文本编辑查找单词边界的方式。参见 http://bugreports.qt-project.org/browse/QTBUG-150 .

您可以使用他们的私有(private) API 来改变 QTextEngine::atWordSeparator 的行为。 Qt 不推荐这种方式。管道在 4.6 中被识别为单词分隔符,但在 4.5.1 或更早版本中不被识别。如果可以的话,我建议更新您的 Qt 版本。否则,您可以为您的 QTextEdit 提供一个带有修改后的 QTextEngine 的新 QTextLayout。

关于c++ - 从单词选择中排除字符的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2545681/

相关文章:

c++ - Boost::geometry::multi_polygon 的负缓冲区

c++ - 使用\in 字符串作为文字而不是转义符

C++从ifstream读取一个 block 并写入ofstream

python - Pyqt5 - 网格布局行为不当

c++ - QSplitter 在 QWidget 和 QTabWidget 之间变得无法区分

qt4 - cmake 中的 ${QT_LIBRARIES}

c++ - 在 C++ 中禁用系统调用

c++ - 如何在 64 位 Qt 应用程序中使用 32 位汇编函数?

c++ - QSize 与使用 2 Int 有常量

c++ - 使用 Qt4 和 C++ 在 Windows XP 上进行并行端口输出