目录
1.QTextEdit 限制文本输入数量
2.使用 QTextEdit,根据我希望一次可见的行数来设置高度
3.限制QTextEdit行数
4.判断QTextEdit当前行数
5.QTextEdit光标移至最后一行
6.QTextEdit删除光标的前一个字符
7.QTextEdit移动光标至上一行的起始位置
8.限制QTextEdit最大行数
1.QTextEdit 限制文本输入数量
connect(ui->textEdit,&QTextEdit::textChanged,this,&LogMgnWdg::slotLimitTextEditTextCount);void LogMgnWdg::slotLimitTextEditTextCount()
{const int& limit_count = 4;QString text = ui->textEdit->toPlainText();int count = text.count();if (count > limit_count){int position = ui->textEdit->textCursor().position();QTextCursor text_cursor = ui->textEdit->textCursor();text.remove(position - (count - limit_count), count - limit_count);ui->textEdit->setText(text);text_cursor.setPosition(position - (count - limit_count));ui->textEdit->setTextCursor(text_cursor);}
}
2.使用 QTextEdit,根据我希望一次可见的行数来设置高度
void SetHeight (QTextEdit* edit, int nRows)
{QFontMetrics m (edit -> font()) ;int RowHeight = m.lineSpacing() ; edit -> setFixedHeight (nRows * RowHeight) ;}
当 nRows=5时:
3.限制QTextEdit行数
ui->textEdit->document ()->setMaximumBlockCount (100);
4.判断QTextEdit当前行数
在 Qt 中,可以使用 document() 函数获取 QTextEdit 的文本编辑器对象,然后通过调用其 lineCount() 函数来获得当前行数。
int lineNumber = textEdit->document()->lineCount();
qDebug() << "当前行数为:" << lineNumber;
获取光标所在行的行号:
QTextCursor text_cursor = ui->textEdit->textCursor();
lineNumber =text_cursor.blockNumber()+1;
5.QTextEdit光标移至最后一行
ui->textEdit->moveCursor(QTextCursor::End);//移动光标到最后一行
6.QTextEdit删除光标的前一个字符
QTextCursor text_cursor = ui->textEdit->textCursor();
text_cursor.deletePreviousChar();
7.QTextEdit移动光标至上一行的起始位置
QTextCursor text_cursor = ui->textEdit->textCursor();
text_cursor.movePosition(QTextCursor::PreviousBlock);
8.限制QTextEdit最大行数
QTextEdit倒序插入,当行数大于某个值时,即删除最后一行。
void LogMgnWdg::setTextEditStyle(QString strLogInfo)
{ui->textEdit->setReadOnly(true);//设置只读ui->textEdit->setTextInteractionFlags(Qt::NoTextInteraction);if(mMaxLogLines>MaxLogLines){ui->textEdit->moveCursor(QTextCursor::End);QTextCursor cursor = ui->textEdit->textCursor();// 移动光标至上一行的起始位置cursor.movePosition(QTextCursor::PreviousBlock);cursor.select(QTextCursor::LineUnderCursor);//当前光标下的行cursor.removeSelectedText();//qDebug()<<"========removeSelectedText";mMaxLogLines = ui->textEdit->document()->lineCount();//qDebug()<<"========mMaxLogLines"<<mMaxLogLines;//解决QTextEdit第一次可以删除最后一行,第二次之后QTextEdit删除最后一行内容总是失败的问题cursor.deletePreviousChar();//QTextEdit删除光标的前一个字符ui->textEdit->moveCursor(QTextCursor::Start, QTextCursor::MoveAnchor);//移动光标至上一行ui->textEdit->insertPlainText(strLogInfo+"\n");}else{mMaxLogLines = ui->textEdit->document()->lineCount();//qDebug()<<"========mMaxLogLines"<<mMaxLogLines;ui->textEdit->insertPlainText(strLogInfo+"\n");ui->textEdit->moveCursor(QTextCursor::Start, QTextCursor::MoveAnchor);//移动光标至上一行}//qDebug()<<"========strLogInfo"<<strLogInfo;ui->textEdit->setLineWrapMode(QTextEdit::LineWrapMode::WidgetWidth);//超出控件宽度进行自动换行
}