返回首页 我的新博客

我的航拍直升机 控制基站软件的编写历程(2.1)

    这几天,由于几门考试,再加上挑战杯全国总决赛的事,我不得不将活停了下来!现在烦心的事基本都过去了,继续!以前考试对我来说不重要,现在不一样了,已经保研了,如果挂一门的话,就竹篮打水一场空了!

     在用QTCreator开发程序时,工程目录不能有空格和汉字.

  QT的版本管理:

QT_creator 允许同时安装多个版本,并且很容易的进行版本切换。

Qt Creator 可以自动选择在系统环境变中的版本,我们如果觉得系统环境变量中的QT版本已经合适了,就不用做任何版本切换操作。否则,可以添加其他版本,通过Tools -> Options... -> Qt Versions。如果,在windows平台上用MinGW来编译QT,就需要告诉Qt Creator MinGW的目录。同过Tools -> Options... -> Qt4 -> Qt Versions -> MinGw Directory来设置MinGW的目录。

  一旦在windows上安装Qt Creator,安装程序会自动将系统环境变量配置好,一般不用再手动配置系统环境变量。如果系统环境变量中没有设置QT的变量,可以同过Tools ->Options来设置系统环境变量。

     新建默认的工程,需要默认的Qt版本进行编译。

 

 

写一个简单的qt例程——文本查找例程(Text Finder):

第一步:建立新工程

      新建一个Qt4 Gui Application,选择QWidget作为Text Finder的基类。在类名中输入textfinder,点击确定。最后生成5个文件,分别是:

textfinder.pro

textfinder.ui

textfinder.h

textfinder.cpp

main.cpp

 

第二步:设计界面,并生成相应的代码,并实现查找功能

       2.1  设计用户界面(在这里提一下,我私人觉得QT的界面比MFC的好多了!)

     在工程浏览窗口中双击textfinder.ui,就会弹出界面设计窗口。

        

      如上图,用一个QLabel,QLineEdit取名lineEdit,QPushButon取名findButton,QTextEdit取名textEdit。用一个QGridLayout来布局QLabel,QLineEdit和QTextEdit。用一个QVBoxLayout将QTextEdit和QGridLayout布局好。

      设计完之后如下图所示(怎么样?是比MFC强多了吧!呵呵):

                   

 

      接下来处理头文件,textfind.h文件中已经有一些必须的代码,例如,includes,a constructor,a destructor,及Ui对象等。我们需要添加私有的槽(slot), on_findButton_clicked()来处理find操作。还要添加一个私有的函数loadTextFile()来读和显示QTextEdit的内容。代码如下:

  private slots:
        void on_findButton_clicked();

  private:
        Ui::TextFinder *ui;
        void loadTextFile();

2.3  处理源文件

      我们首先将textfinder.cpp中的loadTextFile()函数实现,代码片段如下:

   void TextFinder::loadTextFile()
    {
        QFile inputFile(":/input.txt");
        inputFile.open(QIODevice::ReadOnly);

        QTextStream in(&inputFile);
        QString line = in.readAll();
        inputFile.close();

        ui->textEdit->setPlainText(line);
        QTextCursor cursor = ui->textEdit->textCursor();
        cursor.movePosition(QTextCursor::Start, QTextCursor::MoveAnchor, 1);
    }

上面代码中我们打开文本文件用到了QFile,读文本用到了QTextStream,将文本显示到textEdit上用到了setPlainText().所以在textfinder.cpp中要包含QFile和QTextStream,如下所示

#include <QtCore/QFile>
#include <QtCore/QTextStream>

 

2.4 对槽的处理

     在槽 on_findButton_clicked()中,我们用find()函数查找要找的字符串。代码片段如下:

   void TextFinder::on_findButton_clicked()
    {
        QString searchString = ui->lineEdit->text();
        ui->textEdit->find(searchString, QTextDocument::FindWholeWords);
    }

 

最后,我们完成了以上的函数之后,需要在构造函数中调用loadTextFile(),代码如下所示:

TextFinder::TextFinder(QWidget *parent)
        : QWidget(parent), ui(new Ui::TextFinder)
    {
        ui->setupUi(this);
        loadTextFile();
    }

 

     对于槽的使用,需要一个ui_textfinder.h文件,这个文件是编译时界面文件产生的,在编译之前是没有这个文件的,并且textfinder.cpp中 include"ui_textfinder.h"也提示找不到 ui_textfinder.h文件。当编译之后,生成了ui_textfinder.h时,这个问题就消失了!

第三步:添加资源文件

     到上面,编译可以通过,但是编译完之后不能运行,提示"Exited with code 0."。估计就是由没有添加文本文件“input.txt”造成的。

        接下来就逐步添加资源文件:

     单击 file->new->Resource file->OK. 在name栏中输入"textfinder.qrc",

  

   

  单击"next",

单击"Finish" 。

在工程窗口中双击 “textfinder.pro”, 单击右侧的“Add”->"Add Prefix"。设置好prefix的目录,然后单击“Add”->"Add Files",添加相应的资源文件就可以了。

 

第四步:编译运行

 

完工!!!

 

posted @ 2009-06-23 16:45  buffer的blogs  阅读(524)  评论(0编辑  收藏  举报