Create a Qt Widget Based Application—Windows

This turtorial describes how to use Qt Creator to create a small Qt application, Text Finder. It is a simplified version of the Qt UI Tools Text Finder Example. The application user interface is constructed from Qt widgets by using Qt Designer. The application logic is written in C++ by using the code editor.

Creating the Text Finder Project

1. Select File > New File or Project > Application > Qt Widgets Application > Choose.

The Introduction and Project Location dialog opens.

2. In the Name field, type TextFinder.

3. In the Create in field, enter the path for the project files. For example, C:\Users\John\Documents, and then click Next .

The Kit Selection dialog opens.

4. Select build and run kits for your project, and click Next .

Note: If only one kit is specified in Tools > Options > Build & Run > Kits.

The Class Information dialog opens.

5. In the Class name field, type TextFinder as the class name.

6. In the Base class list, select QWidget as the base class type.

Note: The Header file, Source file and Form file fields are automatically updated to match the name of the class.

7. Click Next.

The Project Management dialog opens.

8. Review the project settings, and click Finish to create the project.

Note: The project opens in the Edit mode, and these instructions are hidden. To return to these instructions, open the Help mode.

The TextFinder project now contains the following files:

> textfinder.h

> textfinder.cpp

> main.cpp

> textfinder.ui

> textfinder.pro

The .h and .cpp files come with the necessary boilerplate code. The .pro file is complete.

Filling in the Missing Pieces

Begin by designing the user interface and then move on to filling in the missing code. Finally, add the finde functionality.

Designing the User Interface

1. In the Edit mode, double-click the textfinder.ui file in the Projects view to launch the integrated Qt Designer.

2. Drag and drop the following widgets to the form.

> Label (QLabel)

> Line Edit (QLineEdit)

> Push Button (QPushButton)

Note: To easily locate the widgets, use the search box at the top of the Sidebar. For example, to finde the Label widget, start typing the word label.

3. Double-click the Label widget and enter the text Keyword.

4. Double-click the Push Button widget and enter the text Find.

5. In the Properties pane, change the objectName to findButton.

6. Press Ctrl+A (or Cmd+A) to select the widgets and click Lay out Horizontally (or press Ctrl+H on Windows) to apply a horizontal layout (QHBoxLayout).

7. Drag and drop a Text Edit widget (QTextEdit) to the form.

8. Select the screen area and click Lay out Vertically (or press Ctrl-L) to apply a vertical layout (QVBoxLayout).

Applying the horizontal and vertical layouts ensures that the application UI scales to different screen sizes.

9. To call a find function when users press the Finde button, you use the Qt signals and slots mechanism. A signal is emitted when a particular event occurs and a slot is a function that is called in response to a particular signal. Qt widgets have predefined signals and slots that you can use directly from Qt Designer. To add a slot for the find function:

> Right-click the Find button to open a context-menu.

> Select Go to Slot > clicked(), and then select OK.

A private slot, on_findButton_clicked(), is added to the header files, textfinder.h and a private function, TextFinder:: on_finderButton_clicked(), is added to the source file, textfinder.cpp.

10. Press Ctrl+S to save your changes.

Completing the Header File

The textfinder.h file already has the necessary #includes, a constructor, a destructor, and the Ui object. You need to add a private function, loadTextFile(), to read and display the contents of the input text file in the QTextEdit.

1. In the Projects pane in the Edit view, double-click the textfinder.h file to open it for editing.

2. Add a private function to the private section, after the Ui::Textfinder pointer, as illustrated by the following code snippet:

private

slots: void on_findButton_clicked(); private: Ui::TextFinder *ui; void loadTextFile();

Completing the Source File

Now that the header file is complete, move on to the source file, textfinder.cpp.

1. In the Project pane in the Edit view, double-click the textfinder.cpp file to open it for editing.

2. Add code to load a text file using QFile, read it with QTextStream, and then display it on textEdit with QTextEdit:: setPlainText().

This is illustrated by the following code snippet:

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

3. To use QFile and QTextStream, add the following #includes to textfinder.cpp:

#include <QFile>
#include <QTextStream>

4. For the on_findButton_clicked() slot, add code to extract the searching string and use the QTextEdit::find() function to look for the search string within the text file. This is illustrated by the following code snippet:

void TextFinder::on_findButton_clicked()
{
    QString searchString = ui->lineEdit->text();
    ui->textEdit->find(searchString, QTextDocument::FindWholeWords);
}

5. Once both of these functions are complete, add a line to call loadTextFile() in the constructor, as illustrated by the following code snippet:

TextFinder::TextFinder(QWidget *parent)
    : QWidget(parent), ui(new Ui::TextFinder)
{
    ui->setupUi(this);
    loadTextFile();
}

The on_findButton_clicked() slot is called automatically in the uic generated ui_textfinder.h file by this line of code:

QMetaObject::connectSlotsByName(TextFinder);

Creating a Resource File

You need a resource file (.qrc) wihin which you embed the input text file. The input file can be any .txt file wih a paragraph of text. Create a text file called input.txt and store it in the textfinder folder.

To add a resource file:

1. Select File > New File or Project > Qt > Qt Resource File > Choose.

The Choose the Location dialog opens.

2. In the Name field, enter textfinder.

3. In the Path field, enter C:\User\John\Documents\TextFinder, and click Next.

The Project Management dialog opens.

4. In the Add to project field, select TextFinder.pro and click Finish or Done to open the file in the code editor.

5. Select Add > Add Prefix.

6. In the Prefix field, replace the default prefix with a slash(/).

7. Select Add > Add Files, to locate and add input.txt.

Compiling and Running Your Program

Now that you have all the necessary files, click the button to compile and run your program.

Ref:http://doc.qt.io/qtcreator/creator-writing-program.html

时间: 2024-08-01 10:42:02

Create a Qt Widget Based Application—Windows的相关文章

Build Qt 4.8 in windows by VS2005

In this article, I will explain how to build Qt 4.8 in windows by VS 2005. I take Qt 4.8.6 as the building target. Step 0, Download theQt 4.8.6, and uncompress the package. For me, the source code of Qt is in C:\Lib\Qt\qt-everywhere-opensource-src-4.

[转]application windows are expected to have a root view controller错误

转载地址:http://blog.sina.com.cn/s/blog_6784e6ea01017jfy.html 最新更正:这个提示几乎不影响编译和运行,可以不用设置. 产生这个提示的操作:在xcode4.6中创建一个名字为appTest空工程,create一个ios-application-empty application,直接编译运行 错误提示:虽然编译通过,也能运行,但是底下有错误提示“application windows are expected to have a root vi

初步剖析QT事件处理全过程(Windows)

一.说起Qt事件处理,在windows平台下,当然离不开Win32: Win32程序的基本结构: 1.注册窗口: 2.创建窗口: 3.启动由GetMessage和DispatchMessage构成的事件循环: 4.被注册的回调函数 WndProc 负责相应各类事件: Windows会为当前执行的每个Windows程序维护一个消息队列: 以上即简单介绍Windows消息处理流程: 二.QT事件入口类: QApplication :public QGuiApplication :public QCo

Qt Widget 利用 Qt4.5 实现酷炫透明窗体

本文讲述的是Qt Widget 利用 Qt4.5 实现酷炫透明窗体,QWidget类中的每一个窗口部件都是矩形,并且它们按Z轴顺序排列的.一个窗口部件可以被它的父窗口部件或者它前面的窗口部件盖住一部分. 先来看内容吧. Qt4.2引入了QWidget::setWindowOpacity函数, 可以为窗体设置透明度, 从0.0到1.0之间, 值越小越透明. 经过设置的窗体可以整体呈现透明的效果. 但这种设置比较粗糙, 只能设一个整体的效果,大概只有比如像拖动的时候能用一下,大多数时候都不太实用.在

Qt开发程序在Windows 10应用需要管理员运行的解决思路

Qt开发程序在Windows 10应用需要管理员运行的解决思路 过了很长的时间没有发布博客了,但是我依然努力地开发Qt程序.目前呢,我发现开发Qt程序在Windows 10上有一个怪现象--有些程序右下角加上了盾牌的标志.那这个为什么呢? 原来是因为我的程序名称包含了Patch,结果就包含了加上了盾牌的标志.如果我去掉了Patch标志,盾牌就消失了.原来Windows对于文件名的一些敏感字,会选择性地做出一些防御操作.看来Windows 10在给我们安全的同时还给我们带来了"意想不到"

报错Application windows are expected to have a root view controller at the end of application launc

控制台执行出现如下报错 Application windows are expected to have a root view controller at the end of application launch 解决办法 在AppDelegate.m中的 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 中输入 XXXCon

Application windows are expected to have a root view controller at the end of application launch

今天把Xcode升级了,模拟器 用的12.1的系统,运行时发现项目总是崩溃,采用9.3系统的测试机发现错误日志如下: Application windows are expected to have a root view controller at the end of application launch 解决办法如下: self.window = [[UIWindow alloc]initWithFrame:SCREEN_RECT]; self.window.backgroundColor

Qt开发环境搭建 - Windows + VS2010 + VS插件

Qt 开发环境搭建 - Windows+VS2010+VS插件 1.Qt在Windows平台下的三种开发环境 方案 编辑器 编译器 调试器 一 Qt Creator MinGW GDB 二 Qt Creator VisualC++ 编译器 Debugging Tools for Windows 三 VS2010自带 VS2010自带 VS2010自带 说明: 1) C/C++语言.Qt库.开发环境.操作系统的关系 2) 编辑器.编译器.调试器三者的关系 2.1) 三者共同组成了开发环境 2.2)

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

 创建一个基于应用的QtWidget应用程序 这个手册描述了怎样使用QtCreater创建个一个小的Qt应用程序,Text Finder.它是Qt 工具Text Finder例子的简写版本.这个应用程序的用户界面通过使用Qt Designer来构造生成.逻辑上来说,这个应用程序是通过代码编辑器上编写C++代码实现的. 创建Text Finder 项目案例: 1 选择File(文件) > New Fileor Project(新建文件或项目) > Application(应用程序) >