【github notepad】QT 标签的快速切换、文本特殊格式清除

网友投稿 302 2022-09-01

【github notepad】QT 标签的快速切换、文本特殊格式清除

QTabWidget 标签切换

在帮助中有标签切换的快捷设置说明:

the user can show a different page by clicking on its tab or by pressing its Alt+letter shortcut if it has one. … void QTabWidget::setTabText(int index, const QString & label) Defines a new label for the page at position index’s tab. … If the provided text contains an ampersand character (‘&’), a shortcut is automatically created for it. The character that follows the ‘&’ will be used as the shortcut key. Any previous shortcut will be overwritten, or cleared if no shortcut is defined by the text. See the QShortcut documentation for details (to display an actual ampersand, use ‘&&’).

将切换shortcut设置的语句写在新建标签的new函数中:

QString label = QString("new &%1").arg(newCount);tabwidget->setTabText(newCount-1,label);//qDebug()<currentIndex();

编译后有如下的效果:

修正后的正则替换

从文件读取内容再替换的老方案有bug,现在换成直接在textEdit中读取内容,将内容以’\n’为分隔符拆分成QString数组,对每一行进行正则替换。

void textReplace::regRepAll(){ QString newText = ""; QTextEdit *curEdit = static_cast(tabWidget->currentWidget()); QString Text = curEdit->toPlainText(); QStringList list = Text.split('\n'); foreach (QString line, list) { line = line.replace(QRegExp(fromText->text()),toText->text()); newText = newText+line+"\n"; } curEdit->setPlainText(newText);}

清除字体格式

局部字体设置

我终于明白为什么word没有正则表达式替换功能了。 office word的功能已经非常多了。我曾经给notepad增加了局部内容设置字体的功能,拥有这项功能后用户可以给部分文字设置不同的字体,此时再使用正则表达式,虽然可以完成替换,但是设置好的字体格式会丢失。故设计产品时一定要有取舍,在一条道路上走稳走好。 默认字体: f.setFamily(“Sans”); f.setPointSize(10); f.setWeight(50); 局部字体设置(已在工程中删除这个功能)

void notePad::actionPartFont(){ bool ok; QFont font = QFontDialog::getFont( &ok, QFont("Sans",10,50,false), this); if (ok) { QWidget *w = tabwidget->currentWidget(); QTextEdit *textEdit = static_cast(w); textEdit->setCurrentFont(font); }}

字体格式清除

有时从网页上复制粘贴到编辑器中字体会保留其特殊的格式,为解决这个,增加了一个格式清空的选项。将文本内容的字体统一设置为光标临近内容的简单格式版本(大小相近,去除超链接、粗体等效果)。

void notePad::actionInitFont(){ QWidget *w = tabwidget->currentWidget(); QTextEdit *textEdit = static_cast(w); QString text = textEdit->toPlainText(); textEdit->setText(text); QFont f; f.setPixelSize(-1); f.setFamily("Sans"); f.setPointSize(10); f.setWeight(50); textEdit->selectAll(); textEdit->setCurrentFont(f); textEdit->setTextColor(Qt::black);}

工程地址:

​​https://github.com/theArcticOcean/notepad​​

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:ANSI C (5) —— 结构、联合、位字段、枚举
下一篇:情感营销如何才能具象化落地?看康师傅果汁达人怎么玩!
相关文章

 发表评论

暂时没有评论,来抢沙发吧~