QT学习 控件(三)输入文本类与快捷键:QPlainText;QKeySequenceEdit

前情回顾:
QLineEit QTextEdit文本输入类

QPlainTextEdit是一个简略版本的类,它的性能优于QTextEdit, 主要是因为在文本文档中使用QPlainTextDocumentLayout简化文本布局

QPlainText

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)
设置最大块个数

编辑操作:

API
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

QKeySequenceEdit是一个用于设计快捷键的类,当控件收到焦点时开始录制快捷键的按键情况,并在用户释放最后一个关键字后一秒钟结束录制,这个类通常与 快捷键的响应类一起使用:QShortcut

构造函数:
接受一个父窗口,同时可以直接传递一个默认的快捷键:使用:QKeySequence(“Ctrl+P”) 可以创建一个快捷键。

QKeySequenceEdit(const QKeySequence &keySequence, QWidget *parent = nullptr)
QKeySequenceEdit(QWidget *parent = nullptr)

样式显示:
在这里插入图片描述
获取快捷键的键值信息:

keyseq->keySequence();

手动设置创建快捷键

setKeySequence(QKeySequence keySequence)

QKeySequence类用来描述标准键位序列,里面提供了许多的标准键位供我们设置QKeySequenceEdit的快捷键消息。
例如:

QKeySequence::StandardKey::SelectAll 表示全选键: Ctrl + A

快捷键连接消息:
使用QShortcut

//通过QShortcut来处理按键的消息
QShortcut* sc=new QShortcut(this);
sc->setKey(QKeySequence("Ctrl+Shift+F"));
//通过信号处理 连接一个信号与槽
connect(sc,&QShortcut::activated,this,&Widget::TestKeyCtrlShifF);
//快捷处理
new QShortcut(QKeySequence::StandardKey::SelectAll,this,[]()
{
qInfo()<<"SelectAll";
});

当我们往QKeySequenceEdit输入快捷键时(本例为Ctrl+Shift+F),就会激活QShortcut的activated的信号,表示快捷键激活,然后就会传递一个信号供槽函数接受。

当然不必每次都使用setkey来指定接受的快捷键,还可以直接 直接在创建QShortcut对象时直接进行连接快捷键,如下面的操作。

sc->setKey(QKeySequence("Ctrl+Shift+F"));
posted @   hugeYlh  阅读(261)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· 单线程的Redis速度为什么快?
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
点击右上角即可分享
微信分享提示