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 @ 2023-01-01 18:04  hugeYlh  阅读(157)  评论(0编辑  收藏  举报  来源