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



创建一个基于应用的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指针后面,插入一下的代码片段


private
slots:

void
on_findButton_clicked();

private:

Ui::TextFinder
*ui;

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

完善源码文件:

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

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

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


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

}

4在on_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 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文件所在的位置,添加进去。

编译和运行您的程序:

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

时间: 2024-08-09 14:26:14

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

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

 这个手册描述了使用Qt Quick面访的方式在Android和ios设备上开发QtQuick应用程序的方法.我们使用Qt Creator实现一个QtQuick应用程序,这个应用程序基于加速器的值来加速一个SVG(可伸缩矢量图形). 设置开发环境: 要想能够在移动设备上构建和运行一个应用程序,您必须为设备平台设置开发环境,配置Qt Creator和手机设备之间的连接. 要想部署到Android设备,您必须下载和安装最新的Android NDK和SDK.更新SDK去获取为开发所需的API和工具

Qt使用教程之创建Qt Quick项目

<Qt Enterprise最新版下载> Qt长期以来一直以"linux平台下,最著名的开发平台"身份在全世界开发者中享有盛誉.Qt Enterprise v5.5是目前最先进.最完整的跨平台C++开发工具.它不仅完全实现了一次编写,所有平台无差别运行,更提供了几乎所有开发过程中需要用到的工具.那么在本文中,我们将为大家展示如何创建一个新的Qt Quick项目. 当你从头开始创建一个新的Qt Quick项目时,你有一下选择: Qt Quick Application创建一个

Eclipse创建Maven Web项目 + 测试覆盖率 + 常见问题(2015.07.14--小赞)

Eclipse创建Maven web项目: 到此,并没有创建好,接下来一步步解决问题: 问题:无法创建src/main/java目录 解决: 右键项目选择[properties] 点击[OK] 问题:Cannot change version of project facet Dynamic web module to ... 解决办法: 改为你要的版本,我设为1.7 改为你要的版本,我设为1.7.0 我设为: 保存,刷新项目: 到此尚未完成,还有一个文件要修改,web.xml: 改为: <?x

创建Qt项目

创建Qt项目 1     创建Qt项目 2.1 使用向导创建 打开Qt Creator 界面选择 New Project或者选择菜单栏 [文件]-[新建文件或项目]菜单项 弹出New Project对话框,选择Qt Widgets Application, 选择[Choose]按钮,弹出如下对话框 设置项目名称和路径,按照向导进行下一步, 选择编译套件 向导会默认添加一个继承自CMainWindow的类,可以在此修改类的名字和基类.继续下一步 即可创建出一个Qt桌面程序. 2.2       手

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

一.java 开发环境的搭建 在windows 环境下怎么配置环境. 1.首先安装JDK java的sdk简称JDK ,去其官方网站下载JDK. https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 2.环境变量配置 运行下载的  jdk-7u13-windows-i586.exe 配置.检查JAVA_HOME,PATH, CLASSPATH 三个属性. windows10,右键

Andorid项目创建AVD时,OK按钮无法点亮

经上网查证,发现原因在于CPU/ABI选项无法选择,并显示“No system images installed for this target”,也就是没有适合的系统镜像,通过与安装好了的ADT-bundle中的AVD Manager创建模拟器的窗口情况对比,发现该下拉列表选项正好是SDK Manager安装包Android4.2.2(API 17)的一个组件“ARM EABI v7a System Image”没有安装,如图2所示.安装好了之后,问题解决.另:如果安装了"Inter x86

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

一.java 开发环境的搭建 这里主要说的是在windows 环境下怎么配置环境. 1.首先安装JDK java的sdk简称JDK ,去其官方网站下载最近的JDK即可..http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html 点击下载好的exe文件安装即可. 2.接下来我们需要配置环境变量 xp系统下  右键'我的电脑'--属性--高级 win7 系统下  右键'计算机'--属性--高

C#窗体皮肤制作(二):创建窗体库项目以及最小化、最大化、关闭按钮的实现

很高兴有朋友关注这篇博客,同时也十分抱歉让关注的朋友久等了,隔上一篇博客也有3个月没有更新,主要是由于3月份辞职,4月份初离职到期离开了北京高德,来到了上海张江.目前新工作也处于熟悉当中,希望大家能体谅.刚好这周末有点时间,我就接着写写,这篇博客主要是针对初学者,希望给为他们能提供一种较易理解的窗体皮肤制作思路,记得自己当初学习C#编程的时候也是摸着石头过河. 闲话少说,我还是接着上篇博客继续写,上次说明了下如何收集图片资源,这次就以360安全卫士来做示例进行模仿,本来也想过模仿下qq,但是qq

Intellij IDEA创建Maven Web项目

1前言 在创建项目中,IDEA提供了很多项目模板,比如Spring MVC模板,可以直接创建一个基于Maven的Spring MVC的demo,各种配置都已经设定好了,直接编译部署就可以使用. 最开始自己创建maven web项目时,要么创建一个springmvc项目进行修改,要么创建了一个maven项目(不是web项目),自己添加webapp目录添加配置web.xml文件,以及添加web moudle,配置属性等等. 另外之前总结的几篇Intellij使用文章,里面多多少少都还有点问题,请以本