码迷,mamicode.com
首页 > 其他好文 > 详细

一步步创建Qt Widget项目+TextFinder按钮(摘自笔者2015年将出的《QT5权威指南》,本文为试读篇)

时间:2014-12-23 15:33:28      阅读:156      评论:0      收藏:0      [点我收藏+]

标签:



创建一个基于应用的QtWidget应用程序

这个手册描述了怎样使用QtCreater创建个一个小的Qt应用程序,Text Finder.它是Qt 工具Text Finder例子的简写版本。这个应用程序的用户界面通过使用Qt Designer来构造生成。逻辑上来说,这个应用程序是通过代码编辑器上编写C++代码实现的。

 技术分享

创建Text Finder 项目案例:

1 选择File(文件) > New Fileor Project(新建文件或项目) > Application(应用程序) > QtWidgets Application > Choose(选择)技术分享

接着打开了项目介绍和位置窗口

技术分享

2 在名称的文本框中,填写TextFinder

3 在创建路径的文本框中,键入项目文件存储路径,例如:E:\Examples,接着点击下一步(在WindowsLinux平台)或者继续(在OS X平台上)。

构建套件对话框打开了:

技术分享

4 为运行您的项目选择构建套件,接着点击下一步或者继续

注意:如果一个套件在工具 > 选项 > 编译和运行 >Kits”,这个对话框将会跳过。

接着类信息对话框打开了:

技术分享

5 在类名的文本框中,TextFinder作为类名。

6 在基类列表里,选择QWidget作为基类类型。

注意:头文件,源文件和界面文件将根据类名自动匹配。

7 点击Next和继续。

接着项目管理窗口被打开:

技术分享

       8检查项目设置,并且点击完成(在WindowsLinux平台)或者继续(在OS X平台)

TextFinder项目包含以下文件:



textfinder.h

截图:

技术分享

textfinder.cpp

main.cpp

textfinder.ui

TextFinder.pro


添加缺少部分:

开始设计用户界面,添加缺少的代码,实现查找功能。

设计用户界面:

技术分享

1 Qt Creater中的Edit编辑模式里,双击textfind.ui文件,转到Qt设计界面。

技术分享

2 拖拽下面的部件到界面中:

技术分享

LabelQLabel

Line EditQLineEdit

PushButtonQPushButton

注意:如果想快速定位这些部件,可以使用在工具栏上部的搜索窗口。

例如,查找Label部件,可以输入Label进行查找:

技术分享技术分享

       3双击Label部件,键入文本”keyword”

       4双击Push Button部件,键入文本”Find”

       5在属性面板,改变objectNamefindButton

技术分享

       6 Ctrl+A(或者Cmd+A)选中这些部件,点击水平布局(在LinuxWindow平台上按Ctrl+H,在OS X平台上按Ctrl +Shift + H)应用一个水平布局(QHBoxLayout)。

技术分享

       7拖拽一个Text Edit部件(QTextEdit)到界面上去。

       8选中设计窗口空白区域,点击垂直布局(或按Ctrl + L)来应用一个水平布局(QVBoxLayout)。

技术分享

应用水平和垂直布局确保在不同的屏幕上的自适应。

9 当用户点击Find按钮的时候,将调用一个find方法,如果您想实现这个功能,您可以使用Qt中的信号(signals)和槽(slots)机制。当特定的事件发生时候一个信号(signal)将被发散(emitted),与此同时,一个槽函数(slot)将会被调用来响应这个特定的信号。在Qt WidgetsQt Designer中有一些预先定义好的信号(signals)和槽(slots)可以供您直接使用。接下来为find函数添加槽:

  • 右击”Find”按钮打开一个右键菜单。

  • 选择 转到槽” >clicked(),接着选择.

    一个私有类型的槽函数on_findButton_clicked()被添加到了头文件textfinder.h中去,一个私有的函数TextFinder::on_findButton_clicked()被添加到源文件textfinder.cpp源文件中。

截图如下:

技术分享

头文件部分截图:

技术分享

技术分享

       10Ctrl+S(或Cmd + S)保存您的改变。

       如果想了解更多关于通过QtDesigner来设计界面的信息,查看Qt Designer手册(http://doc.qt.io/qt-5/qtdesigner-manual.html

 

完善头文件:

    textfinder.h文件里面已经有了必要的头文件#include,一个构造函数,一个析构函数,和一个UI 对象,你需要添加私有的函数loadTextFile(),读取并且显示文本的中的内容到QTextEdit中去。

       1在项目面板中的编辑视图,双击textfinder.h文件,打开并且编辑它。

技术分享

       2添加私有函数到私有区域,在Ui::TextFinder指针后面,插入一下的代码片段

private slots:

    void on_findButton_clicked();

 

private:

    Ui::TextFinder *ui;

    void loadTextFile(); //加载文件的方法

完善源码文件:

       现在头文件已经完成了,接下来转到源文件:textfinder.cpp.

       1在项目面板中的编辑视图,双击源文件textfinder.cpp,开始编辑。

技术分享

       2loadTextFile里面,加载一个文件使用QFile,读取文件内容使用QTextStream,显示文本内容到textEdit使用QTextEdit::setPlainText()函数,注意的是若想使用QFileQTextStream,需要导入如下头文件:

#include <QFile>

#include <QTextStream>

       3loadTextFile函数的内容如下:

void TextFinder::loadTextFile()

{

    //加载资源文件input.txt,关于资源文件的加载将下文讲述

    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);

}

       4on_findButton_clicked()槽函数里,通过QTextEdit::find()方法可以查找在文本文件中的字符串。下面是代码片段:

void TextFinder::on_findButton_clicked()

{

    QString searchString = ui->lineEdit->text();

    ui->textEdit->find(searchString,QTextDocument::FindWholeWords);

}

       5 当这两个方法都完成之后,在构造方法里添加一行代码来调用loadTextFile(),代码片段如下:

TextFinder::TextFinder(QWidget *parent) :

    QWidget(parent),

    ui(new Ui::TextFinder)

{

    ui->setupUi(this);

    //调用加载文件的方法

    loadTextFile();

}

       on_findButton_clicked()槽函数将会被自动生成到ui_textfinder.h中下面的一行代码调用:

QMetaObject::connectSlotsByName(TextFinder);

创建资源文件:

       您需要一个资源文件(.qrc),这个资源文件嵌入了您输入的文本文件。这个文本文件可以是任意添加了一段文本的.txt文件。创建一个叫做input.txt的文件,并且将它存储在和源代码所在的同级目录里。

技术分享

添加资源文件:

       1选择File (文件)> New File or Project(新建文件或项目) > Qt>Qt Resource FileQt 资源文件)> Choose;

选择位置对话框如下:

技术分享

技术分享

       2在名称文本框中,键入textfinder

       3在路径文本框中,键入E:\Examples\TextFinder,点击下一步或者继续。项目管理对话框打开了:

技术分享

       4添加到项目域,选择TextFinder.pro,点击完成。在代码编辑器中打开这个.qrc文件.

5 右击textfinder.qrc,选择右键菜单中的addPrefix

       6Prefix文本域里面,用斜线(/)替换掉默认的prefix.

技术分享技术分享

       7右击textfinder.qrc,选择右键菜单中的添加现有文件。然后定位到input.txt文件所在的位置,添加进去。

技术分享

编译和运行您的程序:

       至此为止,您已经有了所有必要的文件,您可以点击 按钮来编译和运行您的程序了。截图如下:

技术分享技术分享

 

一步步创建Qt Widget项目+TextFinder按钮(摘自笔者2015年将出的《QT5权威指南》,本文为试读篇)

标签:

原文地址:http://blog.csdn.net/tototuzuoquan/article/details/42103005

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!