应用办公生活信息教育商业
投稿投诉
商业财经
汽车智能
教育国际
房产环球
信息数码
热点科技
生活手机
晨报新闻
办公软件
科学动态
应用生物
体育时事

第7篇基础(七)实现Qt文本查找功能

  导语
  这一篇我们来加上查找菜单的功能。因为要涉及QtCreator的很多实用功能,所以单独用一篇文章来介绍。以前都用设计器设计界面,而这次我们用代码实现一个简单的查找对话框。除了讲解怎么实现查找功能,这里还详细地说明了怎么进行类中方法的查找和使用。其中也讲解了QtCreator程序中怎样在函数的声明位置和定义位置间进行快速切换。
  环境是:Windows7Qt4。8。1QtCreator2。4。1目录
  一、添加查找对话框二、实现查找功能正文
  一、添加查找对话框
  1我们继续在前一篇程序的基础之上进行更改。首先到mainwindow。h文件中添加类的前置声明(对于什么是前置声明,以及这样使用的好处,可以在网上百度):classQLineEdit;classQDialog;
  前置声明所在的位置跟头文件包含的位置相同。
  然后在private中添加对象定义:QLineEditfindLineEdit;QDialogfindDlg;
  下面再添加一个私有槽声明:privateslots:voidshowFindText();
  槽可以看做是一个函数,只不过可以和信号进行关联。
  2下面到mainwindow。cpp文件中,因为前面在头文件中使用了类的前置声明,所以这里需要先添加头文件包含:includeQLineEditincludeQDialogincludeQPushButton
  然后在构造函数中进行初始化操作,即添加如下代码:findDlgnewQDialog(this);findDlgsetWindowTitle(tr(查找));findLineEditnewQLineEdit(findDlg);QPushButtonbtnnewQPushButton(tr(查找下一个),findDlg);QVBoxLayoutlayoutnewQVBoxLayout(findDlg);layoutaddWidget(findLineEdit);layoutaddWidget(btn);connect(btn,SIGNAL(clicked()),this,SLOT(showFindText()));
  这里创建了一个对话框,然后将一个行编辑器和一个按钮放到了上面,并使用布局管理器进行布局。最后将按钮的单击信号关联到了自定义的显示查找到的文本槽上。下面来添加该槽的定义。
  3这里先说一个可以快速从头文件声明处创建函数定义的方法。到mainwindow。h文件中,将鼠标定位到showFindText()函数上,然后点击右键,在弹出的菜单中选择重构在mainwindow。cpp添加声明,或者直接使用AltEnter快捷键,这样就会直接在mainwindow。cpp文件中添加函数定义,并跳转到该函数处。如下图所示。
  二、实现查找功能
  下面我们来分步骤完成showFindText()函数。在讲解过程中会涉及一些很实用的功能的介绍。
  1先在函数中添加一行代码来获取行编辑器中要查找的字符串。voidMainWindow::showFindText(){QStringstrfindLineEdittext();}
  2在下一行,我们先输入ui,然后按下键盘上的。键,这时就会自动输入。或者,并且列出ui上所有可用部件的对象名。如下图所示。
  3我们要输入textEdit,先输入t,这时会自动弹出textEdit,只需要按下回车键即可。如下图所示。
  4按照提示,我们按下键盘上的F1键,就会在编辑器的右侧打开QTextEdit类的帮助文档。如下图所示。这时还可以按下上面的切换至帮助模式来进入到帮助模式中打开该文档。
  5我们在该类的PublicFunctions公共函数列表中发现有一个find()函数。如下图所示。
  6从字面意思上可以知道该函数应该是用于查找功能的,我们点击该函数进入到它的详细介绍处。如下图所示。
  7根据介绍可以知道该函数用于查询指定的exp字符串,如果找到了就将光标跳转到查找到的位置,如果没有找到就返回false。这个函数还有一个QTextDocument::FindFlags参数,为了了解该参数的意思,我们点击该参数进入其详细介绍处。如下图所示。
  可以看到该参数是一个枚举变量,用来指定查找的方式,分别是向后查找、区分大小写、全词匹配等。如果不指定该参数,默认的是向前查找、不区分大小写、包含该字符串的词也可以查找到。这几个变量还可以使用符号来一起使用。
  8根据帮助,我们补充完该行代码:uitextEditfind(str,QTextDocument::FindBackward);
  9这时已经能实现查找的功能了。但是我们刚才看到find的返回值类型是bool型,而且,我们也应该为查找不到字符串作出提示。将这行代码更改为:if(!uitextEditfind(str,QTextDocument::FindBackward)){QMessageBox::warning(this,tr(查找),tr(找不到1)。arg(str));}
  到这里查找函数就基本讲完了。
  10我们会发现随着程序功能的增强,其中的函数也会越来越多,我们都会为查找某个函数的定义位置感到头疼。而在QtCreator中有几种快速定位函数的方法。
  第一种,在函数声明的地方直接跳转到函数定义的地方。例如我们在mainwindow。h文件的loadFile()函数上点击鼠标右键,在弹出的菜单上选择在方法声明定义之间切换,这时就会自动跳转到mainwindow。cpp文件中该函数的定义处。如下图所示。当然还可以反向使用。
  第二种,快速查看一个文件里的所有函数。可以在编辑器正上方的下拉框里查看正在编辑的文件中所有的函数的列表,点击一个函数就会跳转到指定位置。如下图所示。
  第三种,使用类视图或者大纲视图。在项目列表上面的下拉框中可以更改查看的内容,如果选择为类视图或者大纲,则会显示文件中所有的函数的列表。如下图所示。
  第四种,使用查找功能查看函数的所有调用处。在一个函数名上点击鼠标右键,然后选择查找何处被使用菜单,这时就会在下面的搜索结果栏中显示该函数所有的使用位置。我们可以通过点击一个位置来跳转到该位置。如下图所示。
  11最后,我们来实现界面上的查找功能。从设计模式进入查找动作的触发信号的槽,更改如下:voidMainWindow::onactionFindtriggered(){findDlgshow();}
  这时运行程序,效果如下图所示。
  结语
  讲到这里,我们已经很详细地说明了怎样去使用一个类里面未接触过的函数;也说明了QtCreator中的一些便捷操作。可以看到,QtCreator开发环境,有很多很人性化的设计,我们应该熟练应用它们。在以后的文章中,我们不会再很详细地去用帮助来说明一个函数是怎么来的,该怎么用,这些应该自己试着去查找。

吸烟的人,一定会得肺癌吗?医生是否会得肺癌,这3点很重要如今的生活节奏越来越快,人们的压力也逐渐增大,尤其是男性朋友,每天都要面对来自各方面的压力,时间久了难免会身心俱疲,甚至会让自己处于亚健康状态,为了能够缓解压力,很多人都养成了……雷军爆发了12GB512GB仅3099元,不买iPhone1科技发展日新月异,产品更新换代也特别快,智能手机行业也是一样的,很多机型上市没多久就落后了,因此大家也没有必要选择太贵的手机,3000元左右已经能够买到比较完美的手机。很……湖南首富27岁身家过亿,30岁一无所有,如今干出2000亿眼爱尔眼科董事长陈邦作者邱处机来源邱处机(ID:qiuchuji1993)1984年夏天,刚被军校录取的成都军区某部士兵陈邦,在做最后的身体检查。考……10月大征期,印花税季度申报要点请查收2022年7月1日起《中华人民共和国印花税法》正式施行,10月纳税申报期,按季申报印花税的纳税人迎来印花税法实施后首期申报。印花税申报都需要注意什么?我们已帮您整理好,快来一起……中银证券管涛人民币不具备长期大幅贬值基础中证网讯(记者昝秀丽)人民币汇率长期走势取决于中国经济在全球主要经济体中的表现,我个人对此持乐观态度。中银证券全球首席经济学家管涛日前在接受中国证券报记者采访时表示,当前全球经……不要放弃我刚刚有个话题,关于试管婴儿的,各种费用加起来46万元,不能保证百分百成功。不到万不得已不做试管婴儿,各种器械和药物要用上,做胚胎的培养皿是塑料制品,还有针剂,一不小心就有可能接……扫拖机器人,12款产品5个价位段选购策略,教你如何选到最适合本内容来源于什么值得买APP,观点仅代表作者本人作者:胡侃侃【第一步,先关注我】大家好,我是胡侃侃。前言最为最近几年最畅销的清洁类家电,扫拖机器人给年轻人带来……欧洲大溃败金融资本逃美,产业资本赴中随着俄罗斯的断气,欧洲正在遭遇一场历史级的危机。据北欧电力市场数据显示,8月欧洲国家最高电价突破600欧元,达到峰值,同比上涨了500。而这只是个开始,随着冬天的来临,欧……突发,这国出手救市了!俄发生坠机事故,战机撞上居民楼中国基金报泰勒韩国出手救市了就在周日,韩国承诺至少提供50万亿韩元(347亿美元)支持因利率上升而紧张的信贷市场,以降低拖累经济的违约风险。韩国财政部长Cho……上海大都市圈临港大有可为导读前几天推出的上海大都市圈,让很多人炸了锅。对于长三角城市,这是一个融入上海的机会。而对于临港来说,这是一个意义非凡的远期规划。临港新区从目前的资料、规划、……A股国产制造才是未来!这5家工业母机企业或将前程似锦?什么是工业母机?所谓工业母机,就是指制造机器的机器,就像母鸡下蛋又能孵出新的小鸡一样。说白了就是机床,机床被誉为工业母机,国之重器。数控机床关乎国家经济、军事、工业安全。……15分钟两扣!徐昕终于打出来看来还是得指望前老大送温暖。大家都知道,11冠王广东队本赛季很不顺利,战绩极其糟糕,开赛4场仅取得1场胜利。而且之前的连续两场失利,全是以1分之差落败!总归到……
是该把心清零了时间识人,落难知心,不经历一事,不懂得一人,时间,是最好的过滤器,岁月,是最真的分辨仪,一个人是真心,是假意,不在嘴上,而在心上,一份情是虚伪,是实际,不在平时,而在风雨。……卫星拍下一张中国高清照片,暴露了一个大秘密,西方一下子轰动了图为沙漠变绿洲人造荒原,沙漠变绿洲,盐碱地变良田,节能减排,低碳环保,近年来,中国为了改善民生,不断创造了这种各样的奇迹,最近有卫星拍下一张中国高清照片,暴露了一个大秘密……长期睡眠卡数量不得超过该机构总卡数20银保监会将动态调降长期原标题:长期睡眠卡数量不得超过该机构总卡数20银保监会将动态调降长期睡眠信用卡比例限制标准本报记者周芬棉针对近一时期部分银行业金融机构经营信用卡业务时,理念粗放,服……广发证券大智慧等17家APP不合规被点名月活最高达976万中新经纬4月25日电(马静)25日,国家计算机病毒应急处理中心近期通过互联网监测发现,包括广发易淘金、西部证券在内的17款APP存在隐私不合规行为,违反网络安全法、个人信息保护……洗碗机是减少夫妻争吵的神器,还是智商税的制造源?畅谈关于装修的那些事,分享装修的各种经验和知识。大家好,我是畅谈装修,关注我即可了解更多关于装修的那些事!2015年之前,中国家庭似乎还不太信任洗碗机。但到了2020年,……北京这个村子藏着一座老供销社50多年未改装修,至今还在营业北京是我国最知名的城市了,作为首都,北京也是我国经济最发达的城市之一,是国际知名的现代化大都市。想到北京,我们的第一印象就是那铺天盖地的高楼大厦和金碧辉煌的故宫,但其实北京跟我……任正非出手了,全面收费板上钉钉!这次一个都跑不掉了华为在通讯技术当中的发展,已经来到了5G时代,而5G时代还没有全面普及的情况之下,华为也受到了来自不少国家和地区的打压和制裁,现在,华为却开始了收取5G专利费用,毕竟,在此前就……NBA惨案!勇士落后55分,打破52年纪录,库里目光呆滞,汤北京时间5月12日,NBA季后赛勇士对阵灰熊,此前4场比赛勇士31领先,本场比赛是赛点局,莫兰特继续缺席。但灰熊开场早早占据主动,第一节就砍下38分,半场打完领先勇士多达27分……郑卫莉二婚成杜淳继母,原谅杜志国的不忠,她到底图的是什么?前不久杜淳的妻子王灿发布了一张跟女儿小蛋饺的照片,王灿高高束起的头发看起来依然娇艳动人,情场浪子杜淳也最终臣服在王灿的美貌下。都说杜淳的花花肠子随了他爸杜志国……券商中证1000期指期权丰富产品创设和交易策略中国基金报记者刘明曹雯璟7月22日,备受关注的中证1000股指期货和期权正式上市交易。多位受访券商、期货人士表示,中证1000期指期货的推出,有助于机构开发更多产品。有券……MotoX30Pro将有重大升级,MotoEdgeX30无奈联想手机事业部中国区总经理陈劲昨日在社交媒体上证实,motoX30Pro配备了标准的125W充电头。有网友在评论区问,这款机器的价格能不能2XXX。陈进道:你是来捣乱的吗?暗示……刘诗诗新刊封面引热议,黑白大片气场强大,多个角度撞脸杨幂7月26日,刘诗诗为某时尚杂志拍摄了八月刊封面,这次的氛围大片曝光后,不少网友直呼刘诗诗撞脸了杨幂,引发广泛热议。照片中,刘诗诗身穿黑色露肩毛衣,一头微卷长发披肩,涂着烈……
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网