qt QLineEdit、QTextEdit 、QPlainTextEdit区别QLineEdit、QTextEdit 、QPlainTextEdit 各自的使用场景
原创
©著作权归作者所有:来自51CTO博客作者jacklicto的原创作品,请联系作者获取转载授权,否则将追究法律责任
QLineEdit、QTextEdit 、QPlainTextEdit 各自的使用场景
QLineEdit
QLineEdit是一个单行文本输入框。
QLineEdit允许用户输入和编辑单行纯文本,提供了很多有用的编辑功能,包括:撤消和重做、剪切和粘贴、以及拖放(见setDragEnabled())。
通过改变输入框的echoMode(),同时也可以设置为一个“只写”字段,用于输入密码等。
//限制最长输入 128 位
lineEdit->setMaxLength(128);
//不可写入
lineEdit->setEchoMode(QLineEdit::NoEcho);
//密码*号输入
lineEdit->setEchoMode(QLineEdit::Password);
多种 echoMode()
switch (index) {
case 0:
//默认,输入什么即显示什么
echoLineEdit->setEchoMode(QLineEdit::Normal);
break;
case 1:
//密码,一般是用小黑点覆盖你所输入的字符
echoLineEdit->setEchoMode(QLineEdit::Password);
break;
case 2:
//编辑时输入字符显示输入内容,否则用小黑点代替
echoLineEdit->setEchoMode(QLineEdit::PasswordEchoOnEdit);
break;
case 3:
//任何输入都看不见(只是看不见,不是不能输入)
echoLineEdit->setEchoMode(QLineEdit::NoEcho);
}
LineEdit编辑框限制数字输入整理
//显示输入指定范围的整数
ui->lineEdit->setValidator(new QIntValidator(1,1000,this)); // [1,1000]范围内的整数输入
ui->lineEdit->setValidator(new QDoubleValidator(0.1,0.9,2,this)); // [0.1,0.9],小数点后2位
ui->lineEdit->setValidator(new QRegularExpressionValidator(QRegularExpression("^[(\\s|\\S)+]{0,200}$"),this)); // 输入200个字符
//只输入数字,小数点和负号
QRegExp exp("[0-9\\.-]+$");
QValidator *Validator = new QRegExpValidator(exp);
ui->lineEdit->setValidator(Validator);
//ip地址输入
QString exp = "^(1\\d{2}|2[0-4]\\d|25[0-5]|[1-9]\\d|[1-9])\\."
"(1\\d{2}|2[0-4]\\d|25[0-5]|[1-9]\\d|\\d)\\."
"(1\\d{2}|2[0-4]\\d|25[0-5]|[1-9]\\d|\\d)\\."
"(1\\d{2}|2[0-4]\\d|25[0-5]|[1-9]\\d|\\d)$";
QRegExp rege(exp);
QValidator *Validator = new QRegExpValidator(rege);
ui->lineEdit->setValidator(Validator);
只能输入数字
//整数
QRegExp exp("^-?[0-9]+$");
QValidator *Validator = new QRegExpValidator(exp);
ui->lineEdit_PageIndexList->setValidator(Validator);
数据
//实数
QRegExp exp("^-?[0-9\\.]+$");
QValidator *Validator = new QRegExpValidator(exp);
ui->lineEdit->setValidator(Validator);
//正整数
QRegExp exp("^0?[.]\\d+$");
QValidator *Validator = new QRegExpValidator(exp);
ui->lineEdit->setValidator(Validator);
//正的小数
QRegExp exp("^[1-9]\\d+$");
QValidator *Validator = new QRegExpValidator(exp);
ui->lineEdit->setValidator(Validator);
QTextEdit
多行,富文本编辑器,也可以显示HTML格式文本;
QTextEdit* m_textShower;//显求读取文件内容的文本
m_textShower = newQTextEdit;
(1)设置字体的方法
QFonttextFont;
textFont.setPointSize(16);
m_textShower->setFont(textFont);
(2)设置编辑为只读属性的方法
m_textShower->setReadOnly(true);
(3)设置文字的方法
QTextCursorcsor = m_textShower->textCursor();
csor.movePosition(QTextCursor::Start);
csor.insertText(fileContext);
(4)清除文字的方法
m_textShower->clear();
文本可以使用setSelection()或selectAll()来选中,选中的文本可以被cut()、copy()和paste(),使用setAlignment()来设置文本的对齐方式。
很强大;
QPlainTextEdit
QPlainTextEdit 是一个多行文本编辑器,用于显示和编辑多行简单文本。
QPlainTextEdit 可以理解为 QTextEdit的低配版。QPlainTextEdit支持纯文本显示,QTextEdit支持富文本显示。就是多一个样式。
QPlainTextEdit显示的效率比QTextEdit高,如果需要显示大量文字,尤其是需要滚动条来回滚动的时候,QPlainTextEdit要好很多。
常用方法
//追加一行字符串
appendPlainText()
//将QPlainTextEdit组件中的文本转为字符串
toPlainText()
//逐行读取字符串有些麻烦,QPlainTextEidt以QTextDocument类型存储数据
document()成员函数,可以返回文件对象指针QTextDocument
//是内存中的文本对象,以文本块方式存储,以回车符判断文本块,也就是说一般一行为一个文本块
QTextDocument
//QTextDocument的成员函数,读取文本块,序号从0开始,读出的文本块为QTextBlock类型,可以再通过text()成员函数获取文本QString
findBlockByNumber(int)
//成员函数,可以获取QTextDocument文本块个数,用来遍历文本块
blockCount()