赞
踩
QLineEdit是最基本的输入控件,常用于短行的文本输入。
构造函数
QLineEdit(const QString &contents, QWidget *parent = nullptr)
QLineEdit(QWidget *parent = nullptr)
继承自:**QObject
**
常用基本功能函数:简单介绍几个:
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) 文本编辑的时候(只包括手动的编辑修改)
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("<a href="https://helloylh.com"> 点击进入我的网站 </a>"); //设置MarkDown tedit->setMarkdown("# 一级标题\\n - 选项一\\n - 选项二"); //自定义文本格式 QTextCursor cs=tedit->textCursor(); QTextCharFormat format; format.setFontUnderline(true); format.setUnderlineColor(Qt::green); format.setForeground(Qt::blue); cs.insertText("插入内容",format);
文本的获取:
//输出普通文本
qInfo()<<tedit->toPlainText();
//输出Html型文本
qInfo()<<tedit->toHtml();
//输出MarkDown型文本
qInfo()<<tedit->toMarkdown();
QTextCursor提供了由简单到复杂的对文本的插入操作,简单来说,你可以通过QTextCursor来插入东西到QTextEdit文本框中。
首先获取文本光标:任何插入都是基于光标的
QTextEdit* tedit=new QTextEdit(this);
QTextCursor cursor=tedit->textCursor(); //获取指向tedit的光标
支持的插入操作的类包括:
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);
QPlainTextEdit是一个简略版本的类,它的性能优于QTextEdit。
QPlainText和QTextEdit大致功能实现差不多
构造函数:
QPlainTextEdit(const QString &text, QWidget *parent = nullptr)
QPlainTextEdit(QWidget *parent = nullptr)
基本功能:
设置初始占位字符
ptext->setPlaceholderText("请输入200字以内检讨");
设置只读
ptext->setReadOnly(true);
设置输入文本格式
//设置文本的格式
QTextCharFormat tcf;
tcf.setAnchor(Qt::red);
tcf.setFontUnderline(Qt::blue);
tcf.setBackground(QBrush(Qt::yellow));
//插入格式
ptext->setCurrentCharFormat(tcf);
qInfo()<<ptext->currentCharFormat();
软换行:
ptext->setLineWrapMode(QPlainTextEdit::LineWrapMode::WidgetWidth);
没有软换行
QPlainTextEdit.NoWrap
超出控件宽度进行自动换行
QPlainTextEdit.WidgetWidth
输入操作:
setPlainText(text_str)
设置普通文本内容
insertPlainText(text_str)
插入普通文本
appendPlainText(text_str)
追加普通文本
appendHtml(html_str)
追加HTML字符串
注意有些标签不支持
表格
列表
图片
...
toPlainText() -> 转换成纯文本
块数量;
blockCount() -> int
当前块个数
maximumBlockCount() -> int
最大块个数
setMaximumBlockCount(int)
设置最大块个数
编辑操作:
selectAll() 选中所有 copy() 复制选中文本 cut() 剪切选中文本 paste() 粘贴文本 canPaste() -> bool 判定是否可以粘贴 clear() 清空内容 redo() 重做 isUndoRedoEnabled() -> bool 判定撤销重做是否可用 setUndoRedoEnabled(bool) 设置撤销重做是否可用 undo() 撤销 find(str, QTextDocument.FindFlags) -> bool QTextDocument.FindBackward 向后搜索而不是向前搜索。 QTextDocument.FindCaseSensitively 默认情况下,查找工作区不区分大小写。 指定此选项会将行为更改为区分大小写的查找操作。 QTextDocument.FindWholeWords 使查找匹配仅完整的单词。 zoomIn(int range = 1) 放大缩小 range > 0 放大 range < 0 缩小
信号:
textChanged() 文本改变时 selectionChanged() 选中内容改变时 modificationChanged(bool) 编辑状态改变时 cursorPositionChanged() 光标位置改变时 blockCountChanged(int) 块的个数发生改变时 updateRequest(QRect rect, int dy) 内容更新请求时 copyAvailable(bool) 复制可用时 redoAvailable(bool) 重做可用时 undoAvailable(bool) 撤销可用时
QKeySequenceEdit是一个用于设计快捷键的类,当控件收到焦点时开始录制快捷键的按键情况,并在用户释放最后一个关键字后一秒钟结束录制,这个类通常与 快捷键的响应类一起使用:**QShortcut**
构造函数:
接受一个父窗口,同时可以直接传递一个默认的快捷键:使用:QKeySequence(“Ctrl+P”) 可以创建一个快捷键。
QKeySequenceEdit(const QKeySequence &keySequence, QWidget *parent = nullptr)
QKeySequenceEdit(QWidget *parent = nullptr)
QKeySequence类用来描述标准键位序列,里面提供了许多的标准键位供我们设置QKeySequenceEdit的快捷键消息。
例如:
QKeySequence::StandardKey::SelectAll 表示全选键: Ctrl + A
快捷键连接消息:
使用QShortcut
当我们往QKeySequenceEdit输入快捷键时(本例为Ctrl+Shift+F),就会激活QShortcut的activated的信号,表示快捷键激活,然后就会传递一个信号供槽函数接受。
当然不必每次都使用setkey来指定接受的快捷键,还可以直接在创建QShortcut对象时直接进行连接快捷键,如下面的操作。
void Widget::testQKeySequenceEdit() { auto btn=new QPushButton(this); btn->move(200,0); connect(btn,&QPushButton::clicked,this,&Widget::onClicked); key = new QKeySequenceEdit(this); //相对于Widget窗口来说的快捷键设置 QShortcut* st=new QShortcut(this); st->setKey(QKeySequence("Ctrl+Shift+A")); connect(st,&QShortcut::activated,this,&Widget::activated_Ctrl_Shift_A); new QShortcut(QKeySequence::StandardKey::SelectAll,this,[](){ qInfo()<<"SelectAll 被激活"; }); }
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。