专栏电商日志财经减肥爱情
投稿投诉
爱情常识
搭配分娩
减肥两性
孕期塑形
财经教案
论文美文
日志体育
养生学堂
电商科学
头戴业界
专栏星座
用品音乐

第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开发环境,有很多很人性化的设计,我们应该熟练应用它们。在以后的文章中,我们不会再很详细地去用帮助来说明一个函数是怎么来的,该怎么用,这些应该自己试着去查找。

上海石化2022年净亏损逾28亿元,上年同期为盈利20亿元3月22日晚,上海石化发布2022年年度报告,2022年实现营业收入825。18亿元,同比下降7。57归母净利润为亏损28。72亿元,同比下降243。57,上年同期为盈利20亿元。俄罗斯为何不愿撤出乌东四州?本篇稍微有些敏感,但我也仅仅是陈述事实,并且换了标题,主要是为了纠正目前的1个重大迷思。对于当下的俄乌冲突的结束时间,大家见这里俄乌冲突,大概什么时候结束?,目前一年过去了,我维持相遇不在短长,唯有真情共鸣烟火人间,草木情长。烟雨润着江南,落日暖着关山。微风吹过大地,送来花草的清香,星子布满夜空,妆点深沉的爱恋。谁在时光深处端坐如莲,执手千年的诺言?谁在红尘彼岸望穿秋水,期待一场倾心明天闰二月双龙抬头,牢记吸龙气,吃三样双龙抬头是传统的农历二月初二的节日,也称为龙抬头或春龙节。在这个节日里,有一种俗称吃三样的习俗,人们相信吃了这三样食物可以吸龙气,即能够吸取龙年的气息,保佑自己平安健康,事业发展顺李星李骊明应邀担任陕西元博书法美学研究院艺术顾问阳光讯(记者张涵)2023年3月19日,南远景哲学著作互补论学术研讨会在古城西安曲江艺体中心举行。在有20多位专家学者出席的研讨会上,陕西元博书法美学研究院理事会理事长王薇代表主办果不其然,落地不到三个月,医保改革的后遗症开始显现!果不其然,落地不到三个月,医保改革的后遗症开始显现!2023年1月份开始实施的医保改革,主要内容有两个方面,一是大幅度减少了打入个人医保账户的钱,将单位缴纳的部分划入医保集体账户退一步一景丨来新甫山景区感受充满禅意的春天!温暖的春风吹来了花草香春日游,花满头在这充满希望的季节里新甫山景区里每一步都是景来,带你去瞧瞧新甫山的春天山下的玉兰花儿开的格外灿烂霓裳片片晚妆新,束素亭亭玉殿春烂漫绚丽的玉兰便是BC省民注意4月新一波涨价来袭!油价税率全涨?!加拿大乐活网lahoo。ca江礼且综述新的一个月即将到来,多项增税措施也将出台。从4月1日开始,在BC省无论是去油站加油,还是购买红酒啤酒,费用都将变得更加昂贵。碳税再涨司机加油费月底重组许家印或许真的要来了?!许家印恒大香港恒大集团贾跃亭尽管下周回国贾跃亭一直都是狼来了,但月底重组许家印或许真的要来了!据多家知名财经媒体于昨天(3月20日)发布的报道显示记者从知情人士处获悉,恒大方面透露三次申请上市未果富卫集团再度冲刺IPO2023年3月13日,富卫集团有限公司(下称富卫集团)向港交所提交上市申请书,拟募资10亿美元,并预期于今年二季度招股上市,摩根士丹利高盛招银国际摩根大通为其联席保荐人。据了解,这华为新手机,要再次捅破天众所周知,去年华为Mate50系列手机发布时,余承东用了一个捅破天来形容Mate50系列手机搭载的新技术。手机发布后,大家发现这个捅破天的新技术,并不那么让人惊艳,其实就是使用了北
105亿在十年前不够花曾经蝉联2008年2009年2010年三届胡润中国富豪榜榜首,还曾在电视采访上豪言105亿不够花,后因违法犯罪于2010年被判14年有期徒刑的黄光裕,才出狱不过两年。在这两年中,他涉专网通信骗局上海电气及相关责任人收罚单时任董事长已被双开去年5月,上海电气(601727)业绩暴雷,由此也拉开了900亿专网通信骗局的大幕,在此之后,十余家涉专网通信业务的A股公司被立案调查。去年7月,中国证监会对上海电气立案调查,历时正能量,太太团给斯特林妻子送鼓励,希望她回到卡塔尔一起看球英格兰在此次世界杯的表现非常的不错,但是对于斯特林来说情况则是有点郁闷甚至是揪心,那就是在世界杯期间,他在萨里郡的豪宅居然找到了持械歹徒的闯入,他自己的名牌手表和珠宝都被盗走。在事76个品牌入围!快来为2022年湖南家居消费责任品牌投票红网时刻新闻12月9日讯(记者黄怡萍)12月9日,质造理想家2022年湖南家居消费责任品牌评选活动网络投票正式开启,共有76个家居消费品牌入围参与评选。本次评选活动由湖南红网传媒红囤药行情注意风险,经济复苏线持续,烟花民爆降解塑料今日异动尊重市场规律,洞悉A股本质。大家好,我是京楚。12月8号周四复盘。如果复盘对您有帮助,谢谢关注留言点赞。任何消息都会及时回复!1环境不多写了,重个股,轻大盘,重板块,轻大盘,重逻辑竞拍标的或超20亿,盛新锂能重组风险正步步逼近近日,对于斯诺威股权的竞拍,盛新锂能发布公告显示,在第四次临时股东大会上审议通过了关于拟参与斯诺威公司股权竞拍的议案。在公告发布的当日,斯诺威竞拍股权迎来了第六次的熔断,竞买号L2创建天府旅游名县洛带镇被评为成都市第二批乡村文化振兴样板镇成都有个龙泉驿!这里有洛带古镇的客家情怀,不二隐庐(洛水店)的静谧清幽,东安湖的运动活力有东安阁酒店的时尚高雅,桃花里步行街的味蕾炸开,和锦花园的美味美景有蔚然花海的姹紫嫣红,青龙南京银行行长一职空缺5个月,副行长朱钢有望接任将由谁来消除南京银行的不确定?文每日财报程意近日,在南京市委组织发布的南京市市管领导干部任前公示通告显示,现任南京银行党委委员副行长朱钢,拟任市委管理领导班子企业经理层正职。再叠加再破红线!美国债台高筑,净利息或将超过军费!巨大风险逼日本疯狂抛售,专家美国债务开启末日循环中国网评论员华章当地时间12月2日,据美国财政部的数据,美国未偿联邦政府债务余额已达到31。41万亿美元,不仅大幅超过美国2021年约23万亿美元的国内生产总值,更是已越过31。42022年邮储银行继续保持中国银行业领先水平近期,国际三大评级机构穆迪惠誉标普陆续发布对中国邮政储蓄银行2022年的评级结果。10月18日,穆迪宣布维持邮储银行A1的长期本外币存款评级,评级展望为稳定11月22日,惠誉宣布维瑞士或限制电动汽车使用欧洲电力紧缺风险几何?欧洲能源危机再次波及电动汽车领域。近日,瑞士政府发布了一份关于限制和禁止用电的条例草案,为确保国家电力供应,该草案提及,私人使用电动汽车只允许在绝对必要的旅程中使用。相关专家指出,
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网