当前位置: 首页 > news >正文

大专网站建设论文中小企业上市公司名单

大专网站建设论文,中小企业上市公司名单,不同类型的购物网站,备案时网站名称一.UI界面搭建 (ui界面使用,界面布局,各控件介绍,界面大小调整) 二.信号槽机制实现文件的打开,保存,退出 (信号槽,QFile文件类,QTextStream类,QFileDialog文件对话框&#xff0…

一.UI界面搭建

(ui界面使用,界面布局,各控件介绍,界面大小调整)
在这里插入图片描述
在这里插入图片描述

二.信号槽机制实现文件的打开,保存,退出

(信号槽,QFile文件类,QTextStream类,QFileDialog文件对话框,QMessage消息对话框)

//实现功能 : 打开目标文件,按照右下角ComboBox所选编码格式打开
void Widget::on_btnopen_clicked()
{//文件内容显示到编辑栏中QString filename = QFileDialog::getOpenFileName(this,"打开文件","C:\\Users\\SlanderMC\\Desktop");file.setFileName(filename);file.open(QIODevice::ReadWrite|QIODevice::Text);this->setWindowTitle(filename+"----记事本");QTextStream stream(&file);switch (ui->comboBox->currentIndex()) {case 0:stream.setEncoding(QStringConverter::Utf8);break;case 1:stream.setEncoding(QStringConverter::Utf16);break;case 2:stream.setEncoding(QStringConverter::Utf32);break;case 3:stream.setEncoding(QStringConverter::Utf32BE);break;}QString str = stream.readAll();ui->textEdit->setText(str);ui->fontsizelabel->setText(QString("%1 px").arg(ui->textEdit->font().pointSize()));
}//实现功能 : 若已打开文件,直接保存内容到当前文件  若未打开,则用户选择路径进行保存
void Widget::on_btnsave_clicked()
{//编辑后的内容保存到文件if(!file.isOpen()){QString strsave = QFileDialog::getSaveFileName(this,"保存文件","C:\\Users\\SlanderMC\\Desktop");file.setFileName(strsave);file.open(QIODevice::WriteOnly|QIODevice::Text);this->setWindowTitle(strsave+"----记事本");}QTextStream stream(&file);//按照当前的编码格式写入switch (ui->comboBox->currentIndex()) {case 0:stream.setEncoding(QStringConverter::Utf8);break;case 1:stream.setEncoding(QStringConverter::Utf16);break;case 2:stream.setEncoding(QStringConverter::Utf32);break;case 3:stream.setEncoding(QStringConverter::Utf32BE);break;}stream.seek(0);stream<<ui->textEdit->toPlainText();}//实现功能 : 使用消息对话框,判断用户是否保存
//保存,丢弃(断开连接,置空文本框),退出
void Widget::on_btnclose_clicked()
{int res = QMessageBox::warning(this,"提示","您想要保存吗?",QMessageBox::Save|QMessageBox::Discard|QMessageBox::Cancel);switch (res) {case QMessageBox::Save:on_btnsave_clicked();break;case QMessageBox::Discard:ui->textEdit->clear();if(file.isOpen()){file.close();this->setWindowTitle("记事本");}break;case QMessageBox::Cancel://不做处理break;}
}

三.实现文件切换编码格式功能

(QTextStream类,comboBox选择框控件)
在这里插入图片描述

//实现功能 : 实施切换当前文件读取的编码格式
void Widget::on_comboBox_currentIndexChanged(int index)
{if(file.isOpen()){int index = ui->comboBox->currentIndex();QTextStream stream(&file);switch (index) {case 0:stream.setEncoding(QStringConverter::Utf8);break;case 1:stream.setEncoding(QStringConverter::Utf16);break;case 2:stream.setEncoding(QStringConverter::Utf32);break;case 3:stream.setEncoding(QStringConverter::Utf32BE);break;}//seek切换文件光标位置stream.seek(0);ui->textEdit->setText(stream.readAll());}
}

四.实现鼠标当前所在行高亮的功能,并在右下角显示行列

(textEdit标准控件,ExtraSelection类(包括cursor和QTextCharFormat两个成员))
在这里插入图片描述

//TextEdit的光标移动信号 “cursorPositionChanged”  对应的槽函数 "on_textEdit_cursorPositionChanged"
//--------实现功能 : 根据光标位置在右下角显示行列
void Widget::on_textEdit_cursorPositionChanged()
{//textCursor光标类,返回一个可视光标QTextCursor tc = ui->textEdit->textCursor();//获取行列int block = tc.blockNumber()+1;int column = tc.columnNumber()+1;//字符串拼接,标签更改QString str = QString("第%1行,第%2列").arg(block).arg(column);ui->labelhl->setText(str);//QTextEdit::ExtraSelection 是一个在 QTextEdit 中用来表示额外的文本选择和高亮的结构。//设置当前行高亮QList<QTextEdit::ExtraSelection> extralist;//ExtraSelection结构体包括两个成员  QTextCursor 和 QTextCharFormatQTextEdit::ExtraSelection extra;//QTextCursor 表示在文本中的一个位置或者区间,而extra.cursor = tc;//QTextCharFormat 用于定义这个区间的格式,比如背景颜色、字体,下划线等。QTextCharFormat f;f.setBackground(QBrush(Qt::lightGray));f.setFontUnderline(true);f.setUnderlineColor(Qt::white);f.setUnderlineStyle(QTextCharFormat::WaveUnderline);//配置整行显示,否则无效f.setProperty(QTextFormat::FullWidthSelection,true);extra.format = f;extralist.append(extra);ui->textEdit->setExtraSelections(extralist);}

五.实现Ctrl+O打开,Ctrl+S保存等快捷键功能

(QShortCut类,QKeySequence类,lambda表达式实现信号槽)

Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);ui->textEdit->installEventFilter(this);this->setWindowIcon(QIcon(":/resourse/open2.png"));this->setWindowTitle("记事本");this->setLayout(ui->verticalLayout);  //整体Widget垂直布局//快捷键  QT提供的QShortcut类// 并将其快捷键序列设置为 "Ctrl+N"实现的。//QKeySequence用以设置快捷键//绑定其activated信号连接到一个槽函数QShortcut *cutopen = new QShortcut(QKeySequence("Ctrl+O"),this);QShortcut *cutsave = new QShortcut(QKeySequence("Ctrl+S"),this);connect(cutopen,&QShortcut::activated,[=](){this->on_btnopen_clicked();});connect(cutsave,&QShortcut::activated,[=](){this->on_btnsave_clicked();});
}

六.实现字体放大缩小功能,实时显示 (快捷键实现)

在这里插入图片描述

void Widget::fontsizeup()
{QFont font =  ui->textEdit->font();font.setPointSize(font.pointSize()+1);ui->textEdit->setFont(font);ui->fontsizelabel->setText(QString("%1 px").arg(font.pointSize()));
}void Widget::fontsizedown()
{QFont font =  ui->textEdit->font();font.setPointSize(font.pointSize()-1);ui->textEdit->setFont(font);ui->fontsizelabel->setText(QString("%1 px").arg(font.pointSize()));
}
//设置快捷键,字体放大缩小QShortcut *cutsizeup   = new QShortcut(QKeySequence("Ctrl+="),this);QShortcut *cutsizedown = new QShortcut(QKeySequence("Ctrl+-"),this);connect(cutsizeup,&QShortcut::activated,[=](){fontsizeup();});connect(cutsizedown,&QShortcut::activated,[=](){fontsizedown();});

七.实现字体放大缩小功能(Ctrl+滚轮实现)

(QT事件,事件过滤器eventFilter,QEvent类及其子类,事件处理流程,事件处理函数重写)

①定义一个新的QTextEdit类,重写其事件处理函数,并将原本的QTextEdit提升为此类

头文件

#ifndef MYTEXTEDIT_H
#define MYTEXTEDIT_H#include <QTextEdit>
#include <QWidget>class mytextedit : public QTextEdit
{Q_OBJECT
public:explicit mytextedit(QWidget *parent = nullptr);void wheelEvent(QWheelEvent *e) override;void keyPressEvent(QKeyEvent *e)override;void keyReleaseEvent(QKeyEvent *e)override;
private:bool keyPress = false;
signals:};#endif // MYTEXTEDIT_H

源文件

#include "mytextedit.h"
#include<QDebug>
#include <QTextEdit>
#include <QWheelEvent>
mytextedit::mytextedit(QWidget *parent): QTextEdit{parent}
{}void mytextedit::wheelEvent(QWheelEvent *e)
{if(keyPress == true)  //按下Ctrl时,滑动滚轮切换字体大小{if(e->angleDelta().y()> 0 ){zoomIn();}else{zoomOut();}e->accept();}else   //没有摁下Ctrl时,默认调动滑块{QTextEdit::wheelEvent(e);}
}void mytextedit::keyPressEvent(QKeyEvent *e)
{if(e->key() == Qt::Key_Control)  //按下Ctrl{this->keyPress = true;}QTextEdit::keyPressEvent(e);
}void mytextedit::keyReleaseEvent(QKeyEvent *e)
{if(e->key() == Qt::Key_Control)  //按下Ctrl{this->keyPress = false;}QTextEdit::keyReleaseEvent(e);
}

②.重写事件过滤器

事件处理之前需要经过事件过滤处理,所以也可以在事件过滤函数中对某些事件进行拦截,比如这里的鼠标滚轮事件。
true表示事件处理完毕,不再向下分发,false表示事件继续向下分发。

事件过滤器需要安装在某个组件上,这里需要安装在Widget类下的TextEdit,所以过滤器定义在Widget下,并在TextEdit上进行安装。
在这里插入图片描述在这里插入图片描述
重写eventFilter

//先前对于事件的处理都是直接重写事件处理函数,此次借用 EventFilter事件过滤器来实现对于指定事件的处理
//事件发生->事件过滤->事件分发(分类)->事件处理
//在过滤阶段,处理逻辑写完后,不希望事件继续排放,返回true,表示事件已处理完毕。反之返回false,继续向下派发,由事件处理函数处理
bool Widget:: eventFilter(QObject *watched, QEvent *event)
{QKeyEvent *e = (QKeyEvent*)event;if(e->key() == Qt::Key_Control ){if(e->type() == QKeyEvent::KeyPress){qDebug()<<"key";this->isWheel = true;}else if(e->type() == QKeyEvent::KeyRelease){qDebug()<<"release";this->isWheel = false;}}QWheelEvent *e1 = (QWheelEvent*) event;if(e1->type() == QEvent::Wheel){if(this->isWheel){if(e1->angleDelta().y() >0){fontsizeup();}else if (e1->angleDelta().y() <0){fontsizedown();}return true;}else{return false;}}
}
http://www.yayakq.cn/news/114383/

相关文章:

  • 工程建设造价全过程监督网站做网站备案需要什么特殊材料
  • 苏州吴中长桥网站建设学校网站建设模板
  • 多语言网站开发公司一个官网
  • 做网站子页网站seo推广方案
  • 宁波城乡住房建设厅网站首页龙华营销型网站建设
  • 企业网站建设及维护app开发和网站开发价格
  • 网站开发怎么接入支付宝网站推广策划案效果好
  • 天睦和生态建设有限公司网站wordpress模板导航
  • ps做产品的网站建设网站公司推荐
  • 响应式网站设计图在线代理浏览国外网站
  • 张氏万家网站建设合肥做网站公司
  • 厦门网站建设技术支持公司做公司网站宣传
  • 网站建设服务商排行淘宝联盟推广做网站违法
  • 网络宣传网站建设制作phpcms企业网站源码
  • 阳光家园广州网站网址网站开发高级工程师专业
  • 便宜的vps租用网站做网站优化的协议书
  • 网站开发流程前端郑州网站设计制作价格
  • 会展网站建设成功的原因网页与网站设计什么是主题
  • 缙云做网站seo快排技术教程
  • 有关做洁净工程的企业网站建设自己的网站怎么做
  • 之江汇学校网站建设湖南建设网塔吊证查询
  • 郑州网站seo诊断杭州网站设计网站
  • 班级网站设计房屋平面设计软件手机版
  • 德州网站建设自己做的网站显示不出来
  • 外协加工网最新订单兰州网络优化seo
  • 德网站建设网站建设属不属于无形资产
  • 网站的功能包括哪些内容那个网站可以做恒指 买涨买跌
  • 芜湖市建设工程质量监督站网站给网站做路由
  • 索牛网站建设制作彩页用什么软件
  • 2019年做网站网易企业邮箱1