Archive:Development/Tutorials/Saving and loading (zh CN): Difference between revisions

From KDE TechBase
No edit summary
No edit summary
Line 48: Line 48:
</code>
</code>
<tt>main.cpp</tt> 与教程3中的相比没什么变化,除了说明参数从教程3变为了教程4。
<tt>main.cpp</tt> 与教程3中的相比没什么变化,除了说明参数从教程3变为了教程4。
===mainwindow.h===
<code cppqt n>
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <KXmlGuiWindow>
#include <KTextEdit>
class MainWindow : public KXmlGuiWindow
{
  Q_OBJECT //与教程3相比,新增加的
 
  public:
    MainWindow(QWidget *parent=0);
 
  private:
    KTextEdit* textArea;
    void setupActions();
    QString fileName; //新增加的
  private slots: //新增加的
    void newFile(); //新增加的
    void openFile(); //新增加的
    void saveFile(); //新增加的
    void saveFileAs(); //新增加的
    void saveFileAs(const QString &outputFileName); //新增加的
};
#endif
</code>
由于我们想要添加装载和保存文件的能力,所以我们必须添加将用来完成这些工作的函数。由于这些函数将会通过Qt的[http://doc.trolltech.com/latest/signalsandslots.html 信号/槽]机制被调用,所以我们必须注明这些函数是槽函数,就像我们在第19行做的那样。由于我们正在头文件中使用槽,所以我们同样必须添加[http://doc.trolltech.com/latest/qobject.html#Q_OBJECT <tt>Q_OBJECT</tt>]宏。
我们同样想要跟踪当前打开的文件的文件名,所以我们申明了一个<tt>{{qt|QString}} fileName</tt>。

Revision as of 12:26, 20 August 2008


Development/Tutorials/Saving_and_loading


教程4 - 保存与装载
Tutorial Series   初学者教程
Previous   教程3 - KActions
What's Next   教程5 - 使用KCmdLineArgs
Further Reading   KIO::NetAccess QFile

摘要

现在我们拥有了一个基本的文本编辑器的界面,已经到了做一些有用的事情的时候了。从最根本的来说,一个文本编辑器需要能够从磁盘中装载文件,并且能够创建新文件并保存你创建/编辑过的文件。

KDE提供了许多开发者易于使用的用于操作文件的类。KIO库允许你十分容易地像使用标准文件对话框一样通过网络访问文件。

代码

main.cpp

  1. include <KApplication>
  2. include <KAboutData>
  3. include <KCmdLineArgs>
  1. include "mainwindow.h"

int main (int argc, char *argv[]) {

 KAboutData aboutData( "tutorial4", "tutorial4",
     ki18n("Tutorial 4"), "1.0",
     ki18n("A simple text area which can load and save."),
     KAboutData::License_GPL,
     ki18n("Copyright (c) 2007 Developer") );
 KCmdLineArgs::init( argc, argv, &aboutData );
 KApplication app;

 MainWindow* window = new MainWindow();
 window->show();
 return app.exec();

} main.cpp 与教程3中的相比没什么变化,除了说明参数从教程3变为了教程4。

mainwindow.h

  1. ifndef MAINWINDOW_H
  2. define MAINWINDOW_H
  1. include <KXmlGuiWindow>
  2. include <KTextEdit>

class MainWindow : public KXmlGuiWindow {

 Q_OBJECT //与教程3相比,新增加的
 
 public:
   MainWindow(QWidget *parent=0);
 
 private:
   KTextEdit* textArea;
   void setupActions();
   QString fileName; //新增加的
 private slots: //新增加的
   void newFile(); //新增加的
   void openFile(); //新增加的
   void saveFile(); //新增加的
   void saveFileAs(); //新增加的
   void saveFileAs(const QString &outputFileName); //新增加的

};

  1. endif

由于我们想要添加装载和保存文件的能力,所以我们必须添加将用来完成这些工作的函数。由于这些函数将会通过Qt的信号/槽机制被调用,所以我们必须注明这些函数是槽函数,就像我们在第19行做的那样。由于我们正在头文件中使用槽,所以我们同样必须添加Q_OBJECT宏。

我们同样想要跟踪当前打开的文件的文件名,所以我们申明了一个QString fileName