创建一个基于应用的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,接着点击”下一步”(在Windows和Linux平台)或者”继续”(在OS X平台上)。

构建套件对话框打开了:

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

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

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

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

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

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

7点击Next和继续。

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

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

TextFinder项目包含以下文件:


textfinder.h

截图:

textfinder.cpp

main.cpp

textfinder.ui

TextFinder.pro

添加缺少部分:

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

设计用户界面:

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

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

Label(QLabel)

Line Edit(QLineEdit)

PushButton(QPushButton)

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

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

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

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

5在属性面板,改变objectName为findButton

6 按Ctrl+A(或者Cmd+A)选中这些部件,点击”水平布局”(在Linux和Window平台上按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 Widgets的Qt Designer中有一些预先定义好的信号(signals)和槽(slots)可以供您直接使用。接下来为find函数添加槽:

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

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

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

截图如下:

头文件部分截图:

10按Ctrl+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指针后面,插入一下的代码片段

privateslots:

voidon_findButton_clicked();

private:

Ui::TextFinder*ui;

voidloadTextFile(); //加载文件的方法

完善源码文件:

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

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

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

#include <QFile>

#include <QTextStream>

3loadTextFile函数的内容如下:

voidTextFinder::loadTextFile()

{

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

QFileinputFile(":/input.txt");

inputFile.open(QIODevice::ReadOnly);

QTextStreamin(&inputFile);

QStringline=in.readAll();

inputFile.close();

ui->textEdit->setPlainText(line);

QTextCursorcursor=ui->textEdit->textCursor();

cursor.movePosition(QTextCursor::Start,QTextCursor::MoveAnchor,1);

}

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

voidTextFinder::on_findButton_clicked()

{

QStringsearchString=ui->lineEdit->text();

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

}

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

TextFinder::TextFinder(QWidget*parent):

QWidget(parent),

ui(newUi::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 File(Qt资源文件)> Choose;

选择位置对话框如下:

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

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

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

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

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

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

编译和运行您的程序:

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

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

  1. 创建一个QT for Android的传感器应用应用程序(摘自笔者2015年将出的《QT5权威指南》,本文为试读篇)

     这个手册描述了使用Qt Quick面访的方式在Android和ios设备上开发QtQuick应用程序的方法.我们使用Qt Creator实现一个QtQuick应用程序,这个应用程序基于加速器的值 ...

  2. Qt Creator创建Qt Quick项目

    Qt Creator创建Qt Quick项目 Qt Creator创建Qt Quick项目 创建Qt Quick应用程序 创建基于Qt Quick的Python应用程序 创建Qt Quick UI项目 ...

  3. 如何创建Qt quick应用程序

    Qt(发音为" cute",而不是" cu-tee")是一个跨平台框架,通常用作图形工具包,它不仅创建CLI应用程序中也非常有用.而且它也可以在三种主要的台式机 ...

  4. 如何使用eclipse软件创建一个Java项目?

    同学们在参加Java的时候老师肯定会教给你们如何去创建一个项目,这里怕有些同学没记住,所以单独为大家分享一篇如何使用eclipse软件创建一个Java项目教程,感觉有用的话收藏转发一下~ eclips ...

  5. IDEA 创建Maven Web项目

    背景 公司有一个非常老的项目,决定进行简单重构,纳入自动化流水线部署的序列.原项目采用很古老的Jar包依赖模式,也就是直接将jar包放在项目中.同时,项目结构也非常奇特,不是标准的Web项目目录结果. ...

  6. Qt Creator创建基于Qt Widget的应用程序

    Qt Creator创建基于Qt Widget的应用程序 创建基于Qt Widget的应用程序 创建文本查找器项目 设计用户界 头文件 源文件 创建资源文件 编译并运行程序 创建基于Qt Widget ...

  7. Java开发环境的搭建以及使用eclipse从头一步步创建java项目

    原文:出自本人的Linux博客http://blog.csdn.net/unix21/article/details/18813173 一.Java 开发环境的搭建 这里主要说windows环境下怎么 ...

  8. vs2019中如何创建qt项目_在VS2015中创建Qt项目【VS+Qt项目开发系列】(二)

    在VS2015中创建Qt项目[VS+Qt项目开发系列](二) 发布时间:2018-04-20 22:44, 浏览次数:1269 , 标签: VS Qt 在上一篇[VS+Qt项目开发](一)在VS201 ...

  9. 第二章 Qt Widgets项目的创建、运行和发布的过程

    2019-9-10 新建一个Qt Widgets项目的过程我就不在这里赘述了,我们这里新建一个 " helloworld " 项目,类名叫做HelloDialog,下面对各个文件进 ...

最新文章

  1. hadoop源代码组织结构与阅读技巧
  2. 信息系统项目管理知识--项目沟通管理
  3. Python Web框架Tornado的异步处理代码演示样例
  4. LookupError: unknown encoding: utf-8
  5. 百年GE濒临破产,传奇霸业何以衰亡?
  6. 基于Java毕业设计在线购书商城系统源码+系统+mysql+lw文档+部署软件
  7. C#之CAD二次开发笔记(1) 开发环境测试
  8. 互联网公司的岗位构成
  9. HTML中,使用hover属性完成鼠标悬停切换图片效果
  10. WSL (Windows Subsystem for Linux) wsl1+wsl2+对比+在线安装+离线安装+版本转换+右键菜单+外网访问
  11. Tornado 源码分析(一)
  12. 【自走棋】地图格子高亮效果
  13. 友芝友生物冲刺港交所上市:极其依赖单一供应商,周鹏飞为董事长
  14. 消除VMware启动虚拟机时的floppy0提示的方法
  15. python_绘制动态地图
  16. UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte 0xca in position 358: in
  17. 苹果云服务icloud_苹果手机icloud手动备份和还原个人用户资料
  18. 转oracle数据库字符集AL32UTF8修改为ZHS16GBK即从超集到子集
  19. 如何将图片放大不改变清晰度?
  20. 深聊全链路压测之:第二十三讲 | 如何改造性能监控。

热门文章

  1. 一篇带你搞透回溯算法
  2. wxWidgets:wxModalDialogHook类用法
  3. wxWidgets:wxFileType类用法
  4. boost::mpl模块实现transform_view相关的测试程序
  5. boost::mp11::mp_intersperse相关用法的测试程序
  6. ITK:比较两个图像并将输出像素设置为最小值
  7. VTK:PolyData之ExtractPolyLinesFromPolyData
  8. VTK:图片之ImageEllipsoidSource
  9. Qt Creator建立一个通用项目
  10. Qt Creator加载占位符数据