zoukankan      html  css  js  c++  java
  • 我的航拍直升机 控制基站软件的编写历程(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",添加相应的资源文件就可以了。

    第四步:编译运行

    完工!!!

     

  • 相关阅读:
    作业5.1 四则运算----封装
    作业四
    作业2 (完)
    作业3
    作业二。。
    数独
    回答自己的提问
    《一个程序猿的生命周期》读后感
    阅读13-17章
    阅读10,11,12章
  • 原文地址:https://www.cnblogs.com/buffer/p/1509612.html
Copyright © 2011-2022 走看看