1.第一个QT程序

第一个QT程序

new->Application->Qt Widgets Application
创建一个Qt窗口应用.

创建类的时候,会先创建一个顶层窗口,有一个下拉框.

  • QWidget: QWidget类是所有用户界面对象的基类.QMainWindow和QDialog都是QWidget的子类。
  • QMainWindow : QMainWindow 类提供一个有菜单条、锚接窗口(例如工具条)和一个状态条的主应用程序窗口。
  • QDialog: QDialog类是对话框窗口的基类。

在这里我选择了QWidget,不使用ui.

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

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

    return a.exec();
}

应用程序类QApplication

在新创建的文件main.cpp中,main()创建了对象QApplication.
QApplication:应用程序类,在每个QT程序中,有且只有一个.

窗口拖拽实现:
当你用鼠标拖拽窗口顶部时,窗口接收到了事件的发生.
捕捉到事件后,应用程序类做一些默认的处理.
最终通过应用程序类QApplication完成.

窗口类MyWidget

w.show(): 显示窗口

窗口类创建出来默认是不显示的.

进入事件循环 a.exec()

  • a.exec()
    走到了后台,进行消息循环.
  • return a.exec();
    相当于把程序运行交给Qt处理,进入程序的循环状态。
  • return 0;
    程序就直接退出了,不能达到显示的效果.

头文件

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

mywidget.h

#ifndef MYWIDGET_H
#define MYWIDGET_H

#include <QWidget>

class MyWidget : public QWidget
{
    Q_OBJECT    //如果使用信号槽,必须添加这个宏.

public:
    MyWidget(QWidget *parent = 0);
    ~MyWidget();
};

#endif // MYWIDGET_H

在这段代码里面我们可以看到:

  1. 包含头文件<QWidget>
  2. 自定义MyWidget继承基类QWidget
    3.宏Q_OBJECT

QApplication

文件Demo_pro

对整个项目进行管理.

//当前项目用到的一些模块
QT       += core gui    

//兼容以前的版本
//Qt4没有widgets
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

//生成的应用程序的名字
TARGET = Demo

//指定生成的makefile类型
TEMPLATE = app


DEFINES += QT_DEPRECATED_WARNINGS

CONFIG += c++11

//源文件
SOURCES += \
        main.cpp \
        mywidget.cpp

//头文件
HEADERS += \
        mywidget.h

qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target

我怎么知道我用到的窗口属于哪个类?

例如,我这个项目只用到了MyWidget类.
右键类名MyWidget,Follow Symbol Under Cursor,看到继承的基类是QWidget.
按F1,获得页面

QWidget Class
Header:
#include <QWidget> 
qmake:
QT += widgets

猜你喜欢

转载自www.cnblogs.com/cnleika/p/10525934.html