您的位置:首页 > 游戏 > 游戏 > 汕头关键词优化平台_福州网站建设公司哪个好_千锋教育培训怎么样_深圳网络推广培训中心

汕头关键词优化平台_福州网站建设公司哪个好_千锋教育培训怎么样_深圳网络推广培训中心

2024/12/26 1:22:53 来源:https://blog.csdn.net/qq_59757948/article/details/144450288  浏览:    关键词:汕头关键词优化平台_福州网站建设公司哪个好_千锋教育培训怎么样_深圳网络推广培训中心
汕头关键词优化平台_福州网站建设公司哪个好_千锋教育培训怎么样_深圳网络推广培训中心

第61讲 记事本实现当前行高亮功能

实现策略: 获取当前行的光标位置,使用的信号和获取行列值是一样的,即通过ExtraSelection 来配置相关属性。
关键API:
QList<QTextEdit::ExtraSelection> extraSelections;
void setExtraSelections(const QList<QTextEdit::ExtraSelection> &extraSelections)

ExtraSelection类内部有两个公有成员变量:

其中cursor可以存储获取的光标当前位置信息(比如行数),format用来存储文本样式属性。

综上所述,当前行高亮这个功能的实现还是需要在光标点击的响应槽函数onCursorPositionChanged内部。

第一步,声明了一个 QList 容器 extraSelections,用于存储 QTextEdit::ExtraSelection 类型的元素,并且明了一个 QTextEdit::ExtraSelection(结构体) 类型的变量 ext;

QList <QTextEdit::ExtraSelection> extraSelections;
QTextEdit::ExtraSelection ext;

第二步,利用textEdit内部的textCursor方法获取当前行信息;

 ext.cursor=ui->textEdit->textCursor();

第三步,开始配置颜色,创建了一个 QBrush 对象 qBrush,并使用 Qt::lightGray 颜色初始化它,然后通过 ext.format.setBackground(qBrush) 这行代码,将创建好的画刷所代表的颜色(浅灰色)设置为 ext 这个 ExtraSelection 实例对应的文本格式(ext.format)的背景颜色;

QBrush qBrush(Qt::lightGray);
ext.format.setBackground(qBrush);

第四步,利用setProperty方法配置段属性为整行显示

 ext.format.setProperty(QTextFormat::FullWidthSelection,true);

这行代码调用了 ext.formatQTextCharFormat 类型,用于设置文本的字符格式相关属性)的 setProperty 方法,将 QTextFormat::FullWidthSelection 属性设置为 trueQTextFormat::FullWidthSelection 这个属性表示文本选择区域按照整行的宽度来显示,确保不仅仅是当前光标所在处的文本有背景颜色等样式设置,而是整行文本都会应用之前配置的背景颜色(也就是浅灰色),实现整行高亮的效果。

第五步,进行整体配置

extraSelections.append(ext);
ui->textEdit->setExtraSelections(extraSelections);

第一行 extraSelections.append(ext) 将配置好的 ext(代表当前行的额外选择区域相关属性)添加到 extraSelections 列表中。最后一行 ui->textEdit->setExtraSelections(extraSelections) 则调用了 textEdit 部件的 setExtraSelections 方法,将包含了当前行额外选择区域配置信息的 extraSelections 列表传递进去,使得 textEdit 部件按照这个列表里定义的规则(这里就是当前行高亮的相关属性设置)来更新其显示效果,最终实现在文本编辑部件中当前行被高亮显示的功能。

最后整个槽函数:

void Widget::onCursorPositionChanged(void)
{QTextCursor cursor=ui->textEdit->textCursor();//qDebug()<<cursor.blockNumber()+1 <<cursor.columnNumber()+1;QString blockNum=QString::number(cursor.blockNumber()+1);QString columnNum=QString::number(cursor.columnNumber()+1);const QString labelMes="L:"+blockNum+" "+"C:"+columnNum;ui->labelPositon->setText(labelMes);/*设置当前行高亮*///0.声明了一个 QList 容器 extraSelectionsQList <QTextEdit::ExtraSelection> extraSelections;//同时声明了ext这个结构体变量QTextEdit::ExtraSelection ext;//1.获取当前行的数值ext.cursor=ui->textEdit->textCursor();//2.配置颜色QBrush qBrush(Qt::lightGray);ext.format.setBackground(qBrush);//3.配置段属性,整行显示ext.format.setProperty(QTextFormat::FullWidthSelection,true);//4.整体配置extraSelections.append(ext);ui->textEdit->setExtraSelections(extraSelections);}

运行效果:

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com