QT最简单的程序执行过程分析(内含C++基础知识)

打开QT Creator,新建一个“应用程序-Qt Widgets Application”项目:

输入名称scdc之后点击下一步。

在“构建套件”这个页面中直接点出下一步,然后再输入自己的类名DataCenter,其它不用手动改过来,QT会自动修改,如下图所示:

再点下一步,完成即可了。

这个时候直接点击左下方的“运行”按键,窗体就会出现了。

先看一看项目列表中所列的文件

这些文件分别是:

  1. datacenter.h
  2. datacenter.cpp
  3. main.cpp
  4. datacenter.ui
  5. ui_datacenter.h 这个文件没有在左边的列表中,而是被datacenter.cpp所包含。

datacenter.h

#ifndef DATACENTER_H
#define DATACENTER_H

#include <QMainWindow>

namespace Ui {
class DataCenter;
}

class DataCenter : public QMainWindow
{
    Q_OBJECT

public:
    explicit DataCenter(QWidget *parent = 0);
    ~DataCenter();

private:
    Ui::DataCenter *ui;
};

#endif // DATACENTER_H

datacenter.cpp

#include "datacenter.h"
#include "ui_datacenter.h"

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

DataCenter::~DataCenter()
{
    delete ui;
}

与其他函数不同,构造函数除了有名字,参数列表和函数体之外,还可以有初始化列表,初始化列表以冒号开头,后跟一系列以逗号分隔的初始化字段。上面的QMainWindow(parent)和ui(new Ui::DataCenter)就是初始化列表。

main.cpp

#include "datacenter.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    DataCenter w;
    w.show();

    return a.exec();
}

ui_datacenter.h

/********************************************************************************
** Form generated from reading UI file ‘datacenter.ui‘
**
** Created by: Qt User Interface Compiler version 5.2.0
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/

#ifndef UI_DATACENTER_H
#define UI_DATACENTER_H

#include <QtCore/QVariant>
#include <QtWidgets/QAction>
#include <QtWidgets/QApplication>
#include <QtWidgets/QButtonGroup>
#include <QtWidgets/QHeaderView>
#include <QtWidgets/QMainWindow>
#include <QtWidgets/QMenu>
#include <QtWidgets/QMenuBar>
#include <QtWidgets/QPushButton>
#include <QtWidgets/QStatusBar>
#include <QtWidgets/QTextBrowser>
#include <QtWidgets/QToolBar>
#include <QtWidgets/QWidget>

QT_BEGIN_NAMESPACE

class Ui_DataCenter
{
public:
    QAction *actionLicense;
    QAction *actionAbout;
    QAction *actionNew;
    QAction *actionOpen;
    QAction *actionSave;
    QAction *actionSave_as;
    QAction *actionTemp_list;
    QAction *actionExit;
    QWidget *centralWidget;
    QPushButton *pushButton;
    QTextBrowser *textBrowser;
    QMenuBar *menuBar;
    QMenu *File;
    QMenu *View;
    QMenu *Tool;
    QMenu *About;
    QToolBar *mainToolBar;
    QStatusBar *statusBar;

    void setupUi(QMainWindow *DataCenter)
    {
        if (DataCenter->objectName().isEmpty())
            DataCenter->setObjectName(QStringLiteral("DataCenter"));
        DataCenter->resize(800, 600);
        QIcon icon;
        icon.addFile(QStringLiteral(":/res/scdc.ico"), QSize(), QIcon::Normal, QIcon::Off);
        DataCenter->setWindowIcon(icon);
        actionLicense = new QAction(DataCenter);
        actionLicense->setObjectName(QStringLiteral("actionLicense"));
        actionLicense->setIcon(icon);
        actionAbout = new QAction(DataCenter);
        actionAbout->setObjectName(QStringLiteral("actionAbout"));
        actionNew = new QAction(DataCenter);
        actionNew->setObjectName(QStringLiteral("actionNew"));
        actionOpen = new QAction(DataCenter);
        actionOpen->setObjectName(QStringLiteral("actionOpen"));
        actionSave = new QAction(DataCenter);
        actionSave->setObjectName(QStringLiteral("actionSave"));
        actionSave_as = new QAction(DataCenter);
        actionSave_as->setObjectName(QStringLiteral("actionSave_as"));
        actionTemp_list = new QAction(DataCenter);
        actionTemp_list->setObjectName(QStringLiteral("actionTemp_list"));
        actionExit = new QAction(DataCenter);
        actionExit->setObjectName(QStringLiteral("actionExit"));
        centralWidget = new QWidget(DataCenter);
        centralWidget->setObjectName(QStringLiteral("centralWidget"));
        pushButton = new QPushButton(centralWidget);
        pushButton->setObjectName(QStringLiteral("pushButton"));
        pushButton->setGeometry(QRect(60, 100, 75, 23));
        textBrowser = new QTextBrowser(centralWidget);
        textBrowser->setObjectName(QStringLiteral("textBrowser"));
        textBrowser->setGeometry(QRect(300, 110, 441, 381));
        DataCenter->setCentralWidget(centralWidget);
        menuBar = new QMenuBar(DataCenter);
        menuBar->setObjectName(QStringLiteral("menuBar"));
        menuBar->setGeometry(QRect(0, 0, 800, 23));
        File = new QMenu(menuBar);
        File->setObjectName(QStringLiteral("File"));
        View = new QMenu(menuBar);
        View->setObjectName(QStringLiteral("View"));
        Tool = new QMenu(menuBar);
        Tool->setObjectName(QStringLiteral("Tool"));
        About = new QMenu(menuBar);
        About->setObjectName(QStringLiteral("About"));
        DataCenter->setMenuBar(menuBar);
        mainToolBar = new QToolBar(DataCenter);
        mainToolBar->setObjectName(QStringLiteral("mainToolBar"));
        mainToolBar->setMovable(false);
        DataCenter->addToolBar(Qt::TopToolBarArea, mainToolBar);
        DataCenter->insertToolBarBreak(mainToolBar);
        statusBar = new QStatusBar(DataCenter);
        statusBar->setObjectName(QStringLiteral("statusBar"));
        DataCenter->setStatusBar(statusBar);

        menuBar->addAction(File->menuAction());
        menuBar->addAction(View->menuAction());
        menuBar->addAction(Tool->menuAction());
        menuBar->addAction(About->menuAction());
        File->addAction(actionNew);
        File->addAction(actionOpen);
        File->addAction(actionSave);
        File->addAction(actionSave_as);
        File->addSeparator();
        File->addAction(actionTemp_list);
        File->addSeparator();
        File->addAction(actionExit);
        About->addAction(actionLicense);
        About->addAction(actionAbout);

        retranslateUi(DataCenter);

        QMetaObject::connectSlotsByName(DataCenter);
    } // setupUi

    void retranslateUi(QMainWindow *DataCenter)
    {
        DataCenter->setWindowTitle(QApplication::translate("DataCenter", "DataCenter - Copyright 2012-2014 senscom", 0));
        actionLicense->setText(QApplication::translate("DataCenter", "\350\256\270\345\217\257", 0));
        actionAbout->setText(QApplication::translate("DataCenter", "\345\205\263\344\272\216", 0));
        actionNew->setText(QApplication::translate("DataCenter", "New", 0));
        actionOpen->setText(QApplication::translate("DataCenter", "Open", 0));
        actionSave->setText(QApplication::translate("DataCenter", "Save", 0));
        actionSave_as->setText(QApplication::translate("DataCenter", "Save as...", 0));
        actionTemp_list->setText(QApplication::translate("DataCenter", "temp list....", 0));
        actionExit->setText(QApplication::translate("DataCenter", "Exit", 0));
        pushButton->setText(QApplication::translate("DataCenter", "PushButton", 0));
        File->setTitle(QApplication::translate("DataCenter", "\346\226\207\344\273\266", 0));
        View->setTitle(QApplication::translate("DataCenter", "\346\237\245\347\234\213", 0));
        Tool->setTitle(QApplication::translate("DataCenter", "\345\267\245\345\205\267", 0));
        About->setTitle(QApplication::translate("DataCenter", "\345\205\263\344\272\216", 0));
    } // retranslateUi

};

namespace Ui {
    class DataCenter: public Ui_DataCenter {};
} // namespace Ui

QT_END_NAMESPACE

#endif // UI_DATACENTER_H
时间: 2024-11-05 23:33:28

QT最简单的程序执行过程分析(内含C++基础知识)的相关文章

ASP.NET MVC应用程序执行过程分析

ASP.NET MVC应用程序执行过程分析 2009-08-14 17:57 朱先忠 朱先忠的博客 字号:T | T ASP.NET MVC框架提供了支持Visual Studio的工程模板.本文介绍ASP.NET MVC应用程序的执行过程分析. AD:WOT2015 互联网运维与开发者大会 热销抢票 创建一个简单的ASP.NET MVC应用程序 ASP.NET MVC框架提供了支持Visual Studio的工程模板,从而让你创建支持MVC模式的Web应用程序. 这些MVC工程模板包括: “A

黑马程序员——Java I/O基础知识之I/O流

I/O流基础知识--字节流和字符流 文件存储在硬盘中,是以二进制表示的,只有内存中才能形成字符.数据的来源可以有硬盘,内存,控制台,网络,Java把数据从一个地方转到另一个地方的现象称为流,用InputStream和OutputStream接口来表示,这两个流里面的都是以字节为单位的,后来加入了Reader和Writer,里面操作的是字符,是两个字节为单位的. 字节流 字节流将数据写入文件 try { File file =new File("d:" +File .separator+

黑马程序员——I/O流基础知识

I/O流 Io流 代表有能力产生数据的数据源对象或者有能力接收对象的数据接收端对象.字节流和字符流.中文字符也转编码表,jbk2万多中文字.unicode全世界的字符收录.乱码,两种不同形式的编码表.字符流里面的对象融合了编码表,以便别人使用的使用用你指定的编码方式. 基类:读和写~ 字节流 InputStream,OutputStream 字符流 Reader,Writer Writer 主力方法是writer().既然IO流是操作数据的,而数据的最常见体现形式是:文件. 需求:准备在硬盘上创

JAVA程序员需要学习哪些基础知识?

极客营认为想要成为一个合格的java程序员,必须需要牢固的基础,这样在未来接触新的知识的时候,才能快速吸收,极客营认为基础不牢固的程序员,随时都会被新的知识和技术所淘汰,下盘不稳风一吹就倒,那么作为一个合格的java程序员应该具备哪些知识呢?今天极客营就来和大家分享java高手之路上的必备基础知识: 一.面向对象的知识:JAVA是一个面向对象的开发语言,因此熟悉面向对象对学习JAVA很有必要,您要了解:什么是对象,什么是类;什么是封装,什么是多态,什么是继承;什么是抽象类,什么是接口.了解了概念

[Java]命令行模拟TCP客户端与服务端的简单小程序遇到的问题(基础不牢!扎实和亲手实践比什么都重要!)

简单得不能再简单的需求: 简单模拟TCP客户端与服务端的一次连接和通信,客户端发出一个消息,服务端回馈一个消息 自己第一次编写的代码: Client: class TcpClient1 { public static void main(String[] args) throws Exception { Socket s=new Socket("127.0.0.1",10010); OutputStream out=s.getOutputStream(); out.write(&quo

黑马程序员 —入学笔记《基础知识1》

-------   android培训 java培训.期待与您交流! ---------- JAVA程序通过JDK开发完成,然后交给JRE运行.java的运行机制是先编译,后解释运行.它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码.从而实现了"一次编译.到处执行"的跨平台特性. 下载JDK后,首先要配置环境变量,以便java源码的编译运行,其中java指令集存放路径在PATH下,class文件路径在CLASSPATH. 一.JAVA

微信小程序入门到实战(1)-基础知识

1.微信小程序介绍 微信小程序,简称小程序,英文名Mini Program,是一种不需要下载安装即可使用的应用,它实现了应用“触手可及”的梦想,用户扫一扫或搜一下即可打开应用. 1.1. 为什么是微信小程序 ? 微信有海量用户,而且粘性很高,在微信里开发产品更容易触达用户: 推广app 或公众号的成本太高. 开发适配成本低. 容易小规模试错,然后快速迭代. 跨平台. 1.2. 微信小程序历史 2016年1月11日,微信之父张小龙时隔多年的公开亮相,解读了微信的四大价值观.张小龙指出,越来越多产品

MFC的执行过程分析

MFC程序的执行细节剖析 MFC程序也是Windows程序,所以它应该也有一个WinMain.可是在程序中看不到它的踪影.事实上在程序进入点之前.另一个(并且仅有一个)全局对象(theApp).这就是所谓的Application object,当操作系统将程序载入并激活时,这个全局对象获得配置,其构造函数会先运行.比WinMain更早. 一 CWinApp代替WinMain CWinApp的派生对象被称为application object,能够想见,CWinApp本身就代表一个程序本体.所谓程

java 程序执行输出有两种简单方式

java 程序执行输出有两种简单方式: 1. System.out.println("需要输出的内容"): 该方法可参看运行一个简单的Java程序 结果图: 2. System.out.print("需要输出的内容"): 1 public class HelloWorld 2 { 3 //Java程序的入口方法,程序将从这里开始运行 4 public static void main(String[] args) 5 { 6 //向控制台打印一条语句 7 Syste