我正在尝试创建一个按钮,用于强调我QTextEdit
实例的选定文本。
在构造函数中,我正在激活游标并为稍后使用的setFontUnderline方法设置bool变量。
QTextCursor cursor1 = ui.myQTextfield->textCursor();
ui.myQTextfield->ensureCursorVisible();
test1 = false;
下面的第一种方法是通过按下划线按钮执行,第二种方法是释放它。
void Hauptfenster::pressed_underlinebutton()
{
test1 = true;
ui.myQTextfield->setFontUnderline(test1);
}
void Hauptfenster::released_underlinebutton()
{
cursor.clearSelection();
test1 = false;
ui.myQTextfield->setFontUnderline(test1);
}
问题在于,使用此代码,所选文本首先通过pressed_underlinebutton()方法加下划线,然后立即使用released_underlinebutton方法取消下划线。
使用released_underlinebutton()方法,我想在再次设置setfontunderline(false)时再没有选择去下划线。
答案 0 :(得分:2)
文档需要更多阅读:
QTextCursor QTextEdit::textCursor() const
返回表示当前可见光标的QTextCursor的副本。请注意,返回游标上的更改不会影响QTextEdit的游标;使用setTextCursor()更新可见光标。
它写道您获得了副本,因此当您尝试更改文本光标功能时,您正在复制而不是原始文件。
因此,您应该确保如果您希望更改在文本编辑控件上生效,您需要将文本光标设置为如下:
cursor.clearSelection();
ui.myQTextfield->setTextCursor(cursor); // \o/
There is another way to solve this issue。
QTextCursor::Left 9 Move left one character.
QTextCursor::End 11 Move to the end of the document.
所以,你会写这样的东西:
ui.myQTextfield->moveCursor(QTextCursor::End)
ui.myQTextfield->moveCursor(QTextCursor::Left)