首页 > 其他 > 详细

(二)Qt窗口应用程序

时间:2019-04-21 00:58:59      阅读:188      评论:0      收藏:0      [点我收藏+]

 

技术分享图片技术分享图片

 

QMainWindow,QWidget,QDialog,这三基类都可以作为顶层窗口

QWidget:是所有窗口类的父类,功能最简单

QMainWindow:如果窗口需要菜单栏,工具栏,状态栏,就需要QMainWindow

QDialog:对话框窗口,最显著的特点:右上角只有一个关闭按钮

技术分享图片

 

技术分享图片

main.cpp 

应用程序类和窗口类是Qt程序必须的两个类

#include "mywidget.h"
// qt中类名和头文件名一样, 而且没有.h
#include <QApplication>

// 应用程序入口
int main(int argc, char *argv[])
{
    // 应用程序类, 每一个qt程序中有且只有一个
    // 窗口执行起来之后,应用程序类进入一个消息循坏,不断捕捉事件
    QApplication a(argc, argv);
    // 窗口类, 创建出来之后默认不显示
    MyWidget w; // 顶层窗口
    // 显示窗口
    w.show();

    return a.exec(); // a 即应用程序类
}

mywidget.h

#ifndef MYWIDGET_H
#define MYWIDGET_H

#include <QWidget>
#include <QPushButton>

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

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

private:
    QPushButton b1;
    QPushButton *b2;
};

#endif // MYWIDGET_H

HelloQt.pro文件

#-------------------------------------------------
#
# Project created by QtCreator 2016-03-04T10:09:29
#
#-------------------------------------------------

QT       += core gui # qt程序用到哪些模块
# 兼容以前的版本,qt5 以取没有widgets模块,只有gui模块,qt5 从gui中分离出widgets
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

# 生成的应用程序的名字
TARGET = 123
# 指定生成的makefile的类型 lib
TEMPLATE = app

# 源文件 \ 换行
SOURCES += main.cpp        mywidget.cpp     mybutton.cpp

# 头文件

HEADERS +=     mybutton.h     mywidget.h

CONFIG += c++11

 

mywidget.cpp

#include "mywidget.h"
#include "mybutton.h"   // 自定义类头文件

MyWidget::MyWidget(QWidget *parent)
    : QWidget(parent)
{
    /*
     * 如果窗口需要依附另外一个窗口, 需要给该窗口指定父类
     * 父窗口显示的时候,子窗口也会随之显示
    */
    // 初始化
    b2 = new QPushButton("hello, qt", this);
    // b2->setText("hello, qt");
    // b2->show();

    b1.setParent(this);
    b1.setText("我是老二");

    // 改变位置 -- 移动
    // 窗口坐标系 原点:左上角 x:向右递增, y 向下递增
    b1.move(100, 100);
    b1.resize(50, 50);

    // 内存自动回收
    // 1. 从QObject派生的类 1.直接 2.间接
    // 2. 指定父类, 父亲析构的时候,先析构他的孩子

    // 创建自定义按钮对象
    MyButton* btn = new MyButton(this);
    btn->setText("wo shi mybutton");

    // 设置窗口标题
    this->setWindowTitle("明天就要离开中腾....");
    // this->resize(200, 300);
    this->setFixedSize(200, 300);
    this->setWindowIcon(QIcon("D:\\Luffy.png"));

    // 需求 b1 关闭窗口
    // connect(b1, 发出的信号, this, 处理信号的槽函数);
    connect(&b1, &QPushButton::clicked, this, &MyWidget::close);
    /*
     * b1: 信号的发出者, 此参数是一个指针
     * &QPushButton::clicked: 信号发出者, 内部的一个信号
     *      格式:  & + 信号发出者类的名字 + :: + 信号的名字
     * this: 信号的接收者, 此参数是一个指针
     * &MyWidget::close: 信号的处理函数, 属于this
    */

}

MyWidget::~MyWidget()
{

}

 

(二)Qt窗口应用程序

原文:https://www.cnblogs.com/xiangtingshen/p/10743541.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!