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"));
本文来自博客园,作者:hugeYlh,转载请注明原文链接:https://www.cnblogs.com/helloylh/p/17209632.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· 单线程的Redis速度为什么快?
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码