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 = );
~MyWidget(); private:
QPushButton b1;
QPushButton *b2;
}; #endif // MYWIDGET_H

HelloQt.pro文件

#-------------------------------------------------
#
# Project created by QtCreator --04T10::
#
#------------------------------------------------- QT += core gui # qt程序用到哪些模块
# 兼容以前的版本,qt5 以取没有widgets模块,只有gui模块,qt5 从gui中分离出widgets
greaterThan(QT_MAJOR_VERSION, ): QT += widgets # 生成的应用程序的名字
TARGET =
# 指定生成的makefile的类型 lib
TEMPLATE = app # 源文件 \ 换行
SOURCES += main.cpp\
mywidget.cpp \
mybutton.cpp # 头文件 HEADERS += \
mybutton.h \
mywidget.h CONFIG += c++

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(, );
b1.resize(, ); // 内存自动回收
// 1. 从QObject派生的类 1.直接 2.间接
// 2. 指定父类, 父亲析构的时候,先析构他的孩子 // 创建自定义按钮对象
MyButton* btn = new MyButton(this);
btn->setText("wo shi mybutton"); // 设置窗口标题
this->setWindowTitle("明天就要离开中腾....");
// this->resize(200, 300);
this->setFixedSize(, );
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窗口应用程序Widget的更多相关文章

  1. Qt+ECharts开发笔记(二):Qt窗口动态调整大小,使ECharts跟随Qt窗口大小变换而变换大小

    前言   上一篇将ECharts嵌入Qt中,在开始ECharts使用之前,还有一个很重要的功能,就是在窗口变换大小的时候,ECharts的图表尺寸也要跟随Qt窗口变换大小而变换大小.   Demo演示 ...

  2. 自定义QT窗口部件外观之QStyle

    自定义QT窗口部件外观 重新定义Qt内置窗口部件的外观常用的方法有两种:一是通过子类化QStyle 类或者预定义的一个样式,例如QWindowStyle,来定制应用程序的观感:二是使用Qt样式表. Q ...

  3. Qt 窗口属性简介之Qt::WA_DeleteOnClose

    一.简述 今天介绍一个简单的窗口属性——Qt::WA_DeleteOnClose. 在正常创建窗口后,我们一般会调用close()方法来关闭窗口,这里我们看一下Q助手中关于close()方法的介绍. ...

  4. Qt窗口部件及子部件

    QWidget类是所有用户界面对象的基类,被称为基础窗口部件. #include <QApplication> #include<QLabel> #include<QWi ...

  5. CentOS下Qt窗口透明效果失效,成黑色背景的问题

    一.问题 Linux系统下Qt窗口的透明效果成了黑色,但同样的代码在windows机子上有透明效果,主要是修改系统的配置,仅在centos6.3及其以上版本实验过.其他系统可以相应配置. 二.问题运行 ...

  6. 深度探索QT窗口系统(五篇)

    窗口作为界面编程中最重要的部分,没有窗口就没有界面,是窗口让我们摆脱了DOS时代,按钮是一个窗口,文本框是一个窗口,标签页是一个窗口,...一个窗口可以由多个窗口组成,每天我们都在与窗口打交道,当你打 ...

  7. 调色板类QPalette——包含了Qt窗口不见的颜色组(collor group),和Windows右键属性外观非常类似

    QPalette类包含了Qt窗口不见的颜色组(collor group); 1.Active组,该组的颜色用户当前活动的(active)窗口,即具有键盘或鼠标焦点的窗口; 2.Inactive组,该组 ...

  8. HOOK API(二)—— HOOK自己程序的 MessageBox

    HOOK API(二) —— HOOK自己程序的 MessageBox 0x00 前言 以下将给出一个简单的例子,作为HOOK API的入门.这里是HOOK 自己程序的MessageBox,即将自己程 ...

  9. objective-III 窗口应用程序

    objective-III 一.创建窗口应用程序  打开xcode->create->在iso目录下选择empty-null->创建 在打开的项目文件名上右击NEW FILE,在io ...

随机推荐

  1. vue.js的手脚架vue-cli项目搭建的步骤

    手脚架是什么? 众所周知,现在的前端项目发展得越渐越大,我们前端程序员要从0开始去搭建一套完整的项目很费时,所以这时候前端工程的手脚架就出现了. 我用得vue-cli也是其中之一,还有其他的我也说不清 ...

  2. Git代码管理

    持续更新中...   有道笔记链接:http://note.youdao.com/noteshare?id=10a0a86a3499f92cf26371f2698b97d2   Git网上平台 Git ...

  3. VS2015 IIS Express Web服务器无法启动解决办法

    1.运行和调试vs2015项目 提示无法运行项目,打开vs2013项目发现可以正常运行,所以推测试vs2015项目配置有问题. 2.找到项目启动项中 .csproj文件,定位到<WebProje ...

  4. SQLServer之创建视图

    视图定义 视图是一个虚拟的表,是一个表中的数据经过某种筛选后的显示方式,视图由一个预定义的查询select语句组成. 使用SSMS数据库管理工具创建视图 1.连接数据库,选择数据库,展开数据库-> ...

  5. phpstorm ftp主动模式能连接上,但获取不到目录;

    前面一直都在使用ST做开发,但是也想试试传说中的phpstorm神器.一切都弄好了,想使用它的远程开发功能,省去我本地开发然后再ftp上传做法. 但是却遇到了这个问题,困扰了我三四天!!!我各种百度都 ...

  6. SpringBoot+mybatis使用@Transactional无效

    项目中新增过程中如果出现异常需要回滚, 在service实现方法中使用@Transactional注解失效 解决: 1, 在controller中使用try{}catch捕捉异常 2, 在servic ...

  7. 谈谈当代大学生学习IT技术的必要性。

    21世纪,人类社会已经从工业时代全面进入信息化时代,IT技术的发展正在影响人类的日常生活.比如,外卖平台给人们的用餐提供了更多的选择,移动支付颠覆了传统的支付方式.网购使得人们的购物更加方便,真正做到 ...

  8. SAP Change Request Management (ChaRM)基础教程

    本文介绍了SAP Solution Manager中的变更请求管理工具(Change Request Management,以下简称ChaRM ). 最近打算写个上线前请求号检查工具,为此需要了解相关 ...

  9. ES6 快速入门

    ES6 初识 ES6 是 ECMAScript 6.0 的简写,即 JavaScript 语言的下一代标准,已经在 2015年6月正式发布了,它的目标是让JS能够方便的开发企业级大型应用程序,因此,E ...

  10. 第一本Docker书读书笔记

    日常使用命令 1.停止所有的container,这样才能够删除其中的images: docker stop $(docker ps -a -q) 如果想要删除所有container的话再加一个指令: ...