博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
qt编译实现简单的文本编译器有粘贴复制_QT示例之实现简易文本编辑器
阅读量:6469 次
发布时间:2019-06-23

本文共 3183 字,大约阅读时间需要 10 分钟。

1.实现简易文本编辑器

1.效果图如下:

2.标准警告对话框的实现

效果如图:

image.png

//QMessageBox::StandarButton是一个标准按钮的枚举

const QMessageBox::StandardButton ret

= QMessageBox::warning(this, tr("Application"),

tr("The document has been modified.\n"

"Do you want to save your changes?"),

QMessageBox::Save | QMessageBox::Discard | QMessageBox::Cancel);

switch (ret) {

//如果用户点击了Cancel按钮,那么保存用户对文件内容的修改

case QMessageBox::Save:

return save();

//如果用户点击了Cancel按钮,那么maybeSave()函数返回false.

//然后不进行保存

case QMessageBox::Cancel:

return false;

default:

break;

}

3.标准关于对话框的实现

效果如图:

image.png

//关于对话框的实现,注意换行中字符串的拼接。使用"".

QMessageBox::about(this, tr("About Application"),

tr("The Application example demonstrates how to "

"write modern GUI applications using Qt, with a menu bar, "

"toolbars, and a status bar."));

4.状态栏的实现

效果如图:

image.png

//创建状态栏

void MainWindow::createStatusBar()

{

//如果一个窗口应用程序中不存在状态栏,statusBar函数创建空的状态栏;

//显示给定的信息

statusBar()->showMessage(tr("Ready"));

}

5.在一个菜单栏上新建一个菜单,在菜单上添加菜单项,将菜单项添加到工具栏上。

效果如图:(带有图标的菜单项)

image.png

示例:创建一个菜单栏,在菜单栏添加菜单项;创建一个工具栏,在工具栏上添加一个菜单项.

//menuBar创建一个空的菜单栏

//addMennu函数Appends a new QMenu with title to the menu bar

QMenu *fileMenu = menuBar()->addMenu(tr("&File"));

//创建工具栏

QToolBar *fileToolBar = addToolBar(tr("File"));

//创建一个有关于new这个菜单项的图标

const QIcon newIcon = QIcon::fromTheme("document-new", QIcon(":/images/new.png"));

//添加菜单项

QAction *newAct = new QAction(newIcon, tr("&New"), this);

//New是QKeySequence中定义的一个快捷键之一

//为菜单项创建快捷键

newAct->setShortcuts(QKeySequence::New);

//设置在状态栏提示信息

newAct->setStatusTip(tr("Create a new file"));

connect(newAct, &QAction::triggered, this, &MainWindow::newFile);

//给菜单栏中的一个菜单File添加菜单项

fileMenu->addAction(newAct);

//给工具栏添加一个动作

fileToolBar->addAction(newAct);

总结步骤如下:

1.menuBar函数创建一个空菜单栏,addToolBar函数创建一个工具栏

2.addMenu函数往菜单栏添加一个菜单

3.QIcon::fromTheme函数创建菜单项的图标

4.添加菜单项

5.为菜单项设置快捷键

6.设置点击菜单项后的状态栏提示信息

7.将菜单项添加进菜单中和工具栏中

6.设置打开记事本默认的文件名

QString shownName = curFile;

if (curFile.isEmpty())

shownName = "无标题.txt";

//设置文件名

setWindowFilePath(shownName);

//获取文件名

QString name = this->windowFilePath();

qDebug() << name;

7.读取文件内容

void MainWindow::loadFile(const QString &fileName)

{

QFile file(fileName);

//打开成功返回true,失败返回false

//打开模式是一个枚举,QIODevice::OpenModeFlag

if (!file.open(QFile::ReadOnly | QFile::Text)) {

QMessageBox::warning(this, tr("Application"),

tr("Cannot read file %1:\n%2.")

.arg(QDir::toNativeSeparators(fileName), file.errorString()));

return;

}

//文本流读取文件信息

QTextStream in(&file);

//setPlainText函数将readAll函数读取到的内容全部作为textEdit的内容

textEdit->setPlainText(in.readAll());

//更改当前文件名

setCurrentFile(fileName);

//状态栏显示“file loaded”这条信息2秒钟

statusBar()->showMessage(tr("File loaded"), 2000);

}

8.向文件写入内容

void MainWindow::loadFile(const QString &fileName)

{

QFile file(fileName);

//打开成功返回true,失败返回false

//打开模式是一个枚举,QIODevice::OpenModeFlag

if (!file.open(QFile::ReadOnly | QFile::Text)) {

//警告提示框

QMessageBox::warning(this, tr("Application"),

tr("Cannot read file %1:\n%2.")

.arg(QDir::toNativeSeparators(fileName), file.errorString()));

return;

}

//构造一个操作文件的文本流对象

//文本流读取文件信息

QTextStream in(&file);

textEdit->setPlainText(in.readAll());

//更改当前文件名

setCurrentFile(fileName);

//状态栏显示“file loaded”这条信息2秒钟

statusBar()->showMessage(tr("File loaded"), 2000);

}

转载地址:http://osdko.baihongyu.com/

你可能感兴趣的文章
Python字符串的格式化
查看>>
C#反射---属性
查看>>
服务器常用的状态码及其对应的含义如下
查看>>
zoom和transform:scale的区别
查看>>
幸福框架:可扩展的、动态的、万能的 编号生成器
查看>>
黄聪:PHP 防护XSS,SQL,代码执行,文件包含等多种高危漏洞
查看>>
svn status 显示 ~xx
查看>>
常用HiveQL总结
查看>>
[转]使用Visual Studio Code开发Asp.Net Core WebApi学习笔记(三)-- Logger
查看>>
POJ 3311 Hie with the Pie(状压DP + Floyd)
查看>>
HDU 1402 A * B Problem Plus FFT
查看>>
[CareerCup] 17.3 Factorial Trailing Zeros 求阶乘末尾零的个数
查看>>
Security updates and resources
查看>>
深入理解JavaScript系列(25):设计模式之单例模式
查看>>
DNS为什么通常都会设置为14.114.114.114
查看>>
给定一个序列,判断该序列是否为二叉树查找树的后序遍历序列
查看>>
Sqoop架构(四)
查看>>
golang copy函数
查看>>
《你有多少问题要请示》精华集粹
查看>>
深度 | 机器学习敲门砖:任何人都能看懂的TensorFlow介绍【转】
查看>>