• 「Qt中文教程指南」如何创建基于Qt Widget的应用程序(三)


    Qt 是目前最先进、最完整的跨平台C++开发工具。它不仅完全实现了一次编写,所有平台无差别运行,更提供了几乎所有开发过程中需要用到的工具。如今,Qt已被运用于超过70个行业、数千家企业,支持数百万设备及应用。

    本文描述了如何使用Qt Creator创建一个小的Qt应用程序 - 文本查找器,在上文中(点击这里回顾>>)介绍了如何设计用户界面,在本文将继续介绍如何完善Header、Source文件,一定要持续关注哦~

    如何创建基于Qt Widget的应用程序?

    点击获取Qt Widget组件下载(Q技术交流:166830288)

    填补缺失的部分

    首先设计用户界面,然后继续填充缺失的代码。最后,添加查找功能。

    完善Header文件

    textfinder.h文件已经包含了必要的#includes、构造函数、析构函数和Ui对象,您需要添加一个私有函数loadTextFile()来读取和显示QTextEdit中输入文本文件的内容。

    1. 在Edit视图中的Projects视图中,双击textfinder.h文件来打开它进行编辑。

    2. 在private部分添加一个私有函数,在Ui::TextFinder指针之后:

    1. private slots:
    2. void on_findButton_clicked();
    3. private:
    4. Ui::TextFinder *ui;
    5. void loadTextFile();
    完善Source文件

    现在header文件已经完成,接下来跳转到源文件textfinder.cpp。

    1. 在Edit视图中的Projects视图中,双击textfinder.cpp文件来打开它进行编辑。

    2. 添加代码来使用QFile加载文本文件,使用QTextStream读取它,然后使用QTextEdit::setPlainText()在textEdit上显示它:

    1. void TextFinder::loadTextFile()
    2. {
    3. QFile inputFile(":/input.txt");
    4. inputFile.open(QIODevice::ReadOnly);
    5. QTextStream in(&inputFile);
    6. QString line = in.readAll();
    7. inputFile.close();
    8. ui->textEdit->setPlainText(line);
    9. QTextCursor cursor = ui->textEdit->textCursor();
    10. cursor.movePosition(QTextCursor::Start, QTextCursor::MoveAnchor, 1);
    11. }

    3. 要使用QFile和QTextStream,请在textfinder.cpp中添加以下#includes:

    1. #include "./ui_textfinder.h"
    2. #include
    3. #include

    4. 对于on_findButton_clicked()槽,添加代码来提取搜索字符串,并使用QTextEdit::find()函数在文本文件中查找搜索字符串:

    1. void TextFinder::on_findButton_clicked()
    2. {
    3. QString searchString = ui->lineEdit->text();
    4. ui->textEdit->find(searchString, QTextDocument::FindWholeWords);
    5. }

    5. 在构造函数中添加一行调用loadTextFile():

    1. TextFinder::TextFinder(QWidget *parent)
    2. : QWidget(parent)
    3. , ui(new Ui::TextFinder)
    4. {
    5. ui->setupUi(this);
    6. loadTextFile();
    7. }

    下面一行代码自动调用uic生成的ui_textfinder.h文件中的on_findButton_clicked()槽:

    QMetaObject::connectSlotsByName(TextFinder);

  • 相关阅读:
    html5 checkbox
    Flask学习笔记(七)
    开运算闭运算
    【快速幂】
    【项目_02】隐藏tabbar、对城市数据进行获取、处理、渲染到页面上、城市回显 | 基于Vue3全家桶
    如何有效记录日常开支
    在 Ubuntu Server 上配置静态 IP 地址
    洛谷-收集邮票-(期望dp+期望的平方+平方的期望)
    源码安装包缺失pcre库或者版本低的问题
    TreeSet解析
  • 原文地址:https://blog.csdn.net/AABBbaby/article/details/133941154