Qt学习——Creating a Qt Widget Based Application

来源:互联网 发布:北方广播电视网络 编辑:程序博客网 时间:2024/06/05 02:25

期末的课设需要做一个小项目,我的计划是用Qt和C++,记录自己学习Qt的历程。
简单翻译Qt的教程文档。方便自己日后查看吧。

版本:Qt_5_4_0_MinGW_32bit
建立应用:TextFinder

新建项目 TextFinder

  • 选择File(文件) > New File or Project > Application > Qt Widgets Application > Choose.
  • 名称:TextFinder
  • 注意保存路径不能有中文!!!否则编译报错!!!
  • 为项目选择kits,进行下一步

如果唯一的kit已经在Tools(工具)->Options>Build&Run>Kits中指定,这一步可以跳过

-文档里是这样↓这里写图片描述
我的操作界面
这里写图片描述
因为我的已经指定了
这里写图片描述

  • Details,类名TextFinder,基础类QWidget,头文件和源文件会自动匹配类名。
  • 根据提示next或continue,finish即可。
  • 打开项目目录,包含以下几个文件
    textfinder.h
    textfinder.cpp
    main.cpp
    textfinder.ui
    textfinder.pro

补全文件内容

1.设计用户界面(Designing the User Interface)

  • 在设计板块,双击项目列表里的textfinder.ui文件进入设计师模式。(In the Editor mode, double-click the textfinder.ui file in the Projects view to launch the integrated Qt Designer.)
  • 拖拽进下列窗口小部件。
    Label,Line Edit,PushButton.
    为了方便寻找小部件,可以利用左侧列表上的搜索栏。
  • 双击Label更改内容为Keyword
  • 双击PushButton更改内容为Find
  • 在右下角属性栏将objectName更改为findButton这里写图片描述
  • 按下Ctrl+A即可选中所有小部件,右键选择Lay out Horizontally(或者按下Ctrl+H:Windows和Linux,Ctrl+shift+H:OSX)使水平放置
  • 选中屏幕并点击Lay out Vertically(或按Ctrl+L)实现垂直布局。应用了Horizontal和Vertical布局确保该样式能适应各种屏幕尺寸。
  • 为了当用户按下find按钮时实现find的功能,需要使用Qt的信号标记和槽,当一个事件发生时信号发射并且槽的功能是实现对信号的响应。Qt widgets有现成的信号和槽你可以直接在设计模式使用。为find功能添加槽。
    右键find按钮,选择Go to Slot>clicked(),(转为槽>clicked())。
    完成选择后,on_findButton__clicked()就加入到了头文件里并且生成了一个private function。TextFinder::on_findButton_clicked()加入到的头文件和源文件里。
  • 按下Ctrl+S进行保存。(后续修改完成后也应及时保存)

2.补全头文件

  • 头文件里已经包含了必要的#include,一个构造器(constructor),一个销毁器?(destructor)和一个ui对象。我们需要添加一个private function,loadTextFile().
  • 双击textfinder.h进行编辑
  • 在Ui::TextFinder后加以下代码
private slots:    void on_findButton_clicked();private:    Ui::TextFinder *ui;    void loadTextFile();

3.补全源文件

  • 双击textfinder.cpp进入编辑
  • 添加以下代码
void TextFinder::loadTextFile(){    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);}
  • 在开头添加
#include <QFile>#include <QTextStream>
  • 在on_findButton_clicked()槽里,添加以下代码,QTextEdit::find()模块用来在文件里查找字符串
void TextFinder::on_findButton_clicked(){    QString searchString = ui->lineEdit->text();    ui->textEdit->find(searchString, QTextDocument::FindWholeWords);}
  • 上述完成后,在构造器(constructor)中如下添加一行代码。
TextFinder::TextFinder(QWidget *parent)    : QWidget(parent), ui(new Ui::TextFinder){    ui->setupUi(this);    loadTextFile();}

4.创建一个源文件
需要一个源文件(.qrc)嵌入传入的文件。传入的文件可以是任何带着段落的.txt文件。创建一个input.txt文件把它存在textfinder文件夹里。
这里写图片描述

  • 添加源文件:选择 File > New File or Project > Qt > Qt Resource File > Choose
  • 名称:textfinder
  • 输入本地路径。
  • 在Add to project里,选择TextFinder.pro点击finish或done完成添加。
  • 右键选择Add > Add Prefix.名字/。
  • 右键选择 Add > Add Files,添加进刚刚本地保存的input.txt文件。

5.编译并运行项目!
点击左下角绿色三角即可!

PS.编译运行过一次后,储存该项目文件夹下出现了另一个文件夹这里写图片描述
下一步我准备了解一下这个文件夹的各个内容吧。
(有些名词可能翻译过来并不准确,不过我意在了解操作)

原创粉丝点击