在 QTextEdit 中更改文本
Changing text in a QTextEdit
嗨,我正在尝试创建一个功能来扫描QTextEdit,搜索电子邮件地址和电话号码并将其更改为粗体。当我运行它时,它会崩溃我的程序并出现错误"QTextCursor::setPosition:位置'-1'超出范围",这是代码:
void MakeDisplay::processDoc(){
QString doc = text->toPlainText();
QTextCursor cursor = text->textCursor();
QTextCharFormat format;
format.setFontWeight(75);
QRegExp emails("*.@.*");
QRegExp phoneNums
("(\d{3}-\d{3}-\d{4})(\d{3}-\d{7})(\d{10})(\(\d{3}\)\d{3}-\d{4})(\(\d{3}\)\d{7})");
int i, j;
i = 0;
j = 0;
while (!cursor.atEnd() || (i != doc.size())){
i = doc.indexOf(emails);
j = doc.indexOf(phoneNums);
cursor.setPosition(i,QTextCursor::MoveAnchor);
cursor.setPosition(i, QTextCursor::KeepAnchor);
cursor.mergeCharFormat(format);
cursor.setPosition(j,QTextCursor::MoveAnchor);
cursor.setPosition(j, QTextCursor::KeepAnchor);
cursor.mergeCharFormat(format);
i++;
j++;
}
}
您需要搜索,直到找不到更有趣的内容:
void MakeDisplay::processDoc(){
QString doc = text->toPlainText();
QTextCursor cursor = text->textCursor();
QTextCharFormat format;
format.setFontWeight(75);
QRegExp emails("*.@.*");
QRegExp phoneNums
("(\d{3}-\d{3}-\d{4})(\d{3}-\d{7})(\d{10})(\(\d{3}\)\d{3}-\d{4})(\(\d{3}\)\d{7})");
int i, j;
i = 0;
j = 0;
while (!cursor.atEnd()&& (i!=-1||j!=-1))
{
if(i!=-1)
{
i = doc.indexOf(emails);
if(i!=-1)
{
cursor.setPosition(i,QTextCursor::MoveAnchor);
cursor.setPosition(i, QTextCursor::KeepAnchor);
cursor.mergeCharFormat(format);
++i;
}
}
if(j!=-1)
{
j = doc.indexOf(phoneNums);
if(j!=-1)
{
cursor.setPosition(j,QTextCursor::MoveAnchor);
cursor.setPosition(j, QTextCursor::KeepAnchor);
cursor.mergeCharFormat(format);
++j;
}
}
}
相关文章:
- QTextEdit 中的不可见文本
- 如何通过单击按钮在QTextEdit中显示文本?
- 问题创建一个将一些文本放入qtextedit中的问题
- 在Qt中以高性能方式将(富)文本附加到QTextEdit或QTextBrowser中
- 在 QTextEdit 中更改文本
- QTextEdit中的自定义文本(代码)区域
- 仅从qtextedit小部件中获取可见文本
- (Qt)如何检查 QTextEdit 小部件文本是否已从 QTabWidget 更改
- QTextEdit 不设置文本
- 如何将文本添加到QTextEdit的顶部
- 当我尝试在 qTextEdit 中设置文本时出错
- 在按下QPushButton-Qt时将文本从QTextEdit发送到QListWidget
- 将QTextEdit的文本水平和垂直居中
- QTextEdit.如何手动选择文本
- 在QTextEdit中,如何检测用户何时只将光标插入文本区域一次
- C++ 使用 setw 的文本格式不适用于 QT 的 QTextEdit
- QTextEdit显示的块中图像后的文本格式
- 将格式化文本显示到 QTextEdit 就像在 C 的 printf 中一样
- 在已经包含某些文本的QTextEdit中显示QLineEdit中的文本,并实时更新
- 如何在QTextEdit中高亮显示文本字符串