文章目录
- QLineEdit
- QTextEdit
- QTextCursor
QLineEdit
QLineEdit是最基本的输入控件,继承自QObject ,常用于短行的输入。
构造函数:
可以指定一个默认文本以及父窗口
QLineEdit(const QString &contents, QWidget *parent = nullptr)QLineEdit(QWidget *parent = nullptr)
基本功能函数:
void Widget::testQLineEdit()
{//创建行编辑框edit=new QLineEdit("我是编辑框",this);//设置文本edit->setText("edit");qInfo()<<edit->text();//清空文本edit->clear();//设置显示文本edit->setEchoMode(QLineEdit::EchoMode::Normal);//表面上是什么,实际就输出什么edit->displayText();//设置提示文本edit->setPlaceholderText("手机号/QQ/邮箱");//设置清空按钮edit->setClearButtonEnabled(true);//设置图标行为edit->addAction(QIcon("cha.png"),QLineEdit::ActionPosition::TrailingPosition);//设置自动补全QStringList compstr;compstr<<"123456"<<"zhangsan"<<"111122233";QCompleter* comp=new QCompleter(compstr,this);edit->setCompleter(comp);//限制输入长度edit->setMaxLength(5);//设置只读edit->setReadOnly(true);//设置验证器(用于输入验证)QIntValidator* valdator=new QIntValidator(0,100,this);edit->setValidator(valdator);//设置格式输入(输入按指定格式的文本)edit->setInputMask("AAAA-AAAA-AAAA-AAAA");edit->setText("123456789");//信号:textEdited文本编辑时触发//connect(edit,&QLineEdit::textEdited,this,[](const QString& str){qInfo()<<str;});//textChanged文本改变时触发,包括settext//connect(edit,&QLineEdit::textChanged,this,[](const QString& str){qInfo()<<str;});//回车触发connect(edit,&QLineEdit::returnPressed,this,[=](){qInfo()<<edit->text();});//编辑完成时触发//光标位置发生变化时//选择改变时connect(edit,&QLineEdit::selectionChanged,this,[=](){qInfo()<<edit->selectedText();});
}
信号:
void cursorPositionChanged(int oldPos, int newPos) 光标位置改变void editingFinished() 编辑完成的时候void inputRejected() 输入完成的时候void returnPressed() 输入回车的时候void selectionChanged() 选择改变的时候void textChanged(const QString &text) 文本改变的时候(包括settext)void textEdited(const QString &text) 文本编辑的时候(只包括手动的编辑修改)
信号测试:
//信号:textEdited文本编辑时触发
connect(edit,&QLineEdit::textEdited,this,[](const QString& str){qInfo()<<str;});//textChanged文本改变时触发,包括settextconnect(edit,&QLineEdit::textChanged,this,[](const QString& str){qInfo()<<str;});//回车触发connect(edit,&QLineEdit::returnPressed,this,[=](){qInfo()<<edit->text();});//编辑完成时触发//光标位置发生变化时//选择改变时connect(edit,&QLineEdit::selectionChanged,this,[=](){qInfo()<<edit->selectedText();});
QTextEdit
QTextEdit常用于一段话的输入,常用于长文本,继承自滑块类QAbstractScrollArea,因此他是一个具有滑动条的长文本编辑框。
构造函数:
QTextEdit(const QString &text, QWidget *parent = nullptr)QTextEdit(QWidget *parent = nullptr)
QTextEdit不仅像QLineEdit支持普通文本的输入,还支持Html,markdown等文本的输入。
多种格式的输入:
//设置普通文本
tedit->setPlaceholderText("请输入你的简介");
//设置HTML
tedit->setHtml("<h1>999999daw,666</h1>");
//插入一个Html
tedit->insertHtml("我爱你");
//设置MarkDown
tedit->setMarkdown("# 一级标题\n - 选项一\n - 选项二");
文本的获取:
//输出普通文本
qInfo()<<tedit->toPlainText();
//输出Html型文本
qInfo()<<tedit->toHtml();
//输出MarkDown型文本
qInfo()<<tedit->toMarkdown();
QTextCursor
QTextCursor提供了由简单到复杂的对文本的插入操作,简单来说,你可以通过QTextCursor来插入东西到QTextEdit文本框中。
首先获取文本光标:任何插入都是基于光标的
QTextEdit* tedit=new QTextEdit(this);
QTextCursor cursor=tedit->textCursor();
支持的插入操作的类包括:
QTextFormat
QTextBlockFormat
QTextCharFormat:QTextImageFormat ;QTextTableCellFormat
QTextFrameFormat:QTextTableFormat
QTextListFormat
插入普通文本:
cursor.insertText("Hello World");
插入带格式的复杂文本:(设置文本的格式)
QTextCharFormat :文本格式设置类,用它可以对文本的格式化进行设置,它里面包含了许多对文本格式的set,例如setFontUnderline设置下划线,setBackground设置背景颜色。。。setfont设置格式。。
//设置文本的格式
QTextCharFormat tcf;
tcf.setAnchor(Qt::red);
tcf.setFontUnderline(Qt::blue);
tcf.setBackground(QBrush(Qt::yellow));
cursor.insertText("666",tcf);
插入图片,设置图片的格式
QTextImageFormat :图片格式设置类。
//插入图片,设置图片格式
QTextImageFormat tif;
tif.setName("cha.png");
cursor.insertImage(tif,QTextFrameFormat::Position::InFlow);
插入一段话(文档内容)
QTextDocumentFragment:类
cursor.insertFragment(QTextDocumentFragment::fromHtml("<a href='https://www.baidu.com'>百度一下</a>"));
插入列表
QTextListFormat 列表类
//插入列表
QTextListFormat tlf;
cursor.insertList(tlf);//列表的设置
QTextCursor tcur=tedit->textCursor();
QTextListFormat tlf;
tlf.setNumberPrefix("<");
tlf.setNumberSuffix(">");
tlf.setStyle(QTextListFormat::ListDecimal);
tcur.insertList(tlf);
插入表格
QTextTableFormat 类
//插入表格
QTextTableFormat ttf;
ttf.setCellPadding(10);
//ttf.setBackground(Qt::blue);
cursor.insertTable(3,4,ttf);