Qt简单记事本

简单文档应用实例
这是Qt示例里面的一个,大家可以对照下图在Qt示例里面查找

所需插图
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

界面布局:readSettings()(阅读设置)

document.h

#ifndef DOCUMENT_H
#define DOCUMENT_H

#include
#include
#include
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow();
private:

 void readSettings();     // 阅读设置

};
#endif // DOCUMENT_H

document.cpp

#include
#include “document.h”

MainWindow::MainWindow()
// : textEdit(new QPlainTextEdit)
{
readSettings();
}

void MainWindow::readSettings()
{
QSettings settings(QCoreApplication::organizationName(), QCoreApplication::applicationName());
const QByteArray geometry = settings.value(“geometry”, QByteArray()).toByteArray();
if (geometry.isEmpty()) {
const QRect availableGeometry = QApplication::desktop()->availableGeometry(this);
resize(availableGeometry.width() / 3, availableGeometry.height() / 2);
move((availableGeometry.width() - width()) / 2,
(availableGeometry.height() - height()) / 2);
} else {
restoreGeometry(geometry);
}
}

document/main.cpp

#include
#include
#include
#include “document.h”
int main(int argc, char *argv[])
{

QApplication app(argc, argv);
QCoreApplication::setOrganizationName("QtProject");      //保存编写此应用程序的组织的名称
QCoreApplication::setApplicationVersion(QT_VERSION_STR);    //此属性保存此应用程序的版本
QCommandLineParser parser;   //命令行解析器 parser.setApplicationDescription(QCoreApplication::applicationName());
parser.addHelpOption();
parser.addVersionOption();
parser.addPositionalArgument("file", "The file to open.");   //位置参数
parser.process(app);    
MainWindow mainWin;
mainWin.show();   //显示用户可见窗体
return app.exec();

}

标题设置可编写文档的文本框(这里是纯文本框)

document.h

#ifndef DOCUMENT_H
#define DOCUMENT_H

#include
#include
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow();
private:
QPlainTextEdit *textEdit;
};
#endif // DOCUMENT_H

document.cpp

#include “document.h”

MainWindow::MainWindow()
textEdit(new QPlainTextEdit)
{
setCentralWidget(textEdit); //设置中央小部件,可编辑的文本窗体
}

main.cpp

#include
#include “document.h”
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
MainWindow mainWin;
mainWin.show(); //显示用户可见窗体
return app.exec();
}

设置标题(标题为untitled.txt)

document.h
#ifndef DOCUMENT_H
#define DOCUMENT_H

#include
#include
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow();
private:
void setCurrentFile(const QString &fileName); //设置当前文件
QPlainTextEdit *textEdit;
QString curFile; //当前文件
};
#endif // DOCUMENT_H
document.cpp
#include
#include “document.h”

MainWindow::MainWindow()
textEdit(new QPlainTextEdit)
{
setCurrentFile(QString());
}

void MainWindow::setCurrentFile(const QString &fileName)
{
curFile = fileName;
QString shownName = curFile; //当前文件窗体名
if (curFile.isEmpty())
shownName = “untitled.txt”;
setWindowFilePath(shownName); //如果当前文件不为空,窗体名就为文件名,setWindowFilePath:设置窗口文件路径
}
document/main.cpp
#include
#include “document.h”
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
MainWindow mainWin;
mainWin.show(); //显示用户可见窗体
return app.exec();
}
优化1:添加文本框
在……中添加
setCentralWidget(textEdit); //设置中央小部件,这样可编辑文档

优化2:为标题添加*号

private:
void documentWasModified(); //文件被修改
void setCurrentFile(const QString &fileName); //设置当前文件

QString shownName = curFile; //当前文件窗体名
if (curFile.isEmpty())
shownName = “untitled.txt”;
setWindowFilePath(shownName); //如果当前文件不为空,窗体名就为文件名,setWindowFilePath:设置窗口文件路径
connect(textEdit->document(), &QTextDocument::contentsChanged,
this, &MainWindow::documentWasModified);

void MainWindow::documentWasModified() //为标题添加*号
{
setWindowModified(textEdit->document()->isModified());
}

设置菜单栏

File

新建一个File菜单

document.h
#ifndef DOCUMENT_H
#define DOCUMENT_H

#include
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow();
private:
void createActions();
};
#endif // DOCUMENT_H
document.cpp
#include //#include
#include “document.h”
MainWindow::MainWindow()
// : textEdit(new QPlainTextEdit)
{
createActions();

}
void MainWindow::createActions()
{
QMenu *fileMenu = menuBar()->addMenu(tr("&File"));
}
document/main.cpp
#include
#include “document.h”
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
MainWindow mainWin;
mainWin.show(); //显示用户可见窗体
return app.exec();
}
优化:为File添加一个工具栏(可移动)

#include
//在createActions()函数里面添加
QToolBar *fileToolBar = addToolBar(tr(“File”));
在File里面建New(新建)控件

document.h
#ifndef DOCUMENT_H
#define DOCUMENT_H

#include
#include
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow();
private:
void createActions();
};
#endif // DOCUMENT_H
document.cpp
#include
#include
#include “document.h”

MainWindow::MainWindow()
{
createActions();
}

void MainWindow::createActions()
{
QMenu *fileMenu = menuBar()->addMenu(tr("&File"));
QToolBar *fileToolBar = addToolBar(tr(“File”));
QAction *newAct = new QAction(tr("&New"), this);
fileMenu->addAction(newAct); //为菜单栏添加newAct这个操作,不添加此代码我们在图形化窗体界面上看不到该部件
}
document/main.cpp
#include
#include “document.h”
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
MainWindow mainWin;
mainWin.show(); //显示用户可见窗体
return app.exec();
}

优化1:添加new.png图标

1、这里需要添加资源new.png(下面有如何插入资源教程)
2、这里给菜单栏和工具栏都进行了添加操作,因为QAction是不可见的,我们需要将用QAction创建的对象
void MainWindow::createActions()
{
QMenu *fileMenu = menuBar()->addMenu(tr("&File"));
QToolBar *fileToolBar = addToolBar(tr(“File”));
const QIcon newIcon = QIcon::fromTheme(“document-new”, QIcon(":/images/new.png"));
//QAction是表示一个用户操作的对象,将图标进行可视化(插入菜单栏、工具栏中)
QAction *newAct = new QAction(newIcon, tr("&New"), this); //newAct:新行为
fileMenu->addAction(newAct); //为菜单栏添加newAct这个操作
fileToolBar->addAction(newAct); //为工具栏添加newAct这个操作
}

优化2:为New添加快捷键

newAct->setShortcuts(QKeySequence::New); //键序列与QAction对象一起

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值