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. adb部署及使用

    一 掌握adb部署&使用方法及常用命令 1.何为adb? sdk软件开发套件software development kit apk是安卓应用安装包 adb是android sdk的一个工具, ...

  2. 【原】Java学习笔记025 - 内部类

    package cn.temptation; public class Sample01 { public static void main(String[] args) { // 内部类(嵌套类): ...

  3. 高端内存映射之kmap_atomic固定映射--Linux内存管理(二十一)

    1 固定映射 1.1 数据结构 linux高端内存中的临时内存区为固定内存区的一部分, 对于固定内存在linux内核中有下面描述 x86 arm arm64 arch/x86/include/asm/ ...

  4. Type '' cannot conform to protocol '' because it has requirements that cannot be satisfied

    我有一个Objective-C协议,我试图在Swift类中实现.例如: @class AnObjcClass; @protocol ObjcProtocol <NSObject> - (v ...

  5. centos简单的后台运行

    # 忽略输出文件 nohup java FileTest > /dev/null 2>&1 &

  6. ASP.NET -- WebForm -- ScriptManager 类

    ASP.NET -- WebForm -- ScriptManager 类 通过 ScriptManager 可注册随后将作为页面一部分呈现的脚本. 1. 注册并立即执行脚本. --RegisterS ...

  7. 【Python 11】汇率兑换4.0(函数)

    1.案例描述 设计一个汇率换算程序,其功能是将美元换算成人民币,或者相反. 2.0增加功能:根据输入判断是人民币还是美元,进行相应的转换计算 3.0增加功能:程序可以一直运行,知道用户选择退出 4.0 ...

  8. 性能测试监控平台:InfluxDB+Grafana+Jmeter

    前面的博客介绍了InfluxDB.Telegraf.Grafana的安装和使用方法,这篇博客,介绍下如何利用这些开源工具搭建性能测试监控平台... 前言 性能测试工具jmeter自带的监视器对性能测试 ...

  9. Mapreduce数据分析实例

    数据包 百度网盘 链接:https://pan.baidu.com/s/1v9M3jNdT4vwsqup9N0mGOA提取码:hs9c 复制这段内容后打开百度网盘手机App,操作更方便哦 1.     ...

  10. SkylineGlobe 7.0.1 & 7.0.2版本Web开发 如何实现土方量计算

    土方量计算,或者叫填挖方计算,体积计算,Skyline在很早的版本中就提供了这个的功能. 目前的软件版本,不仅仅可以对地形修改对象进行土方量计算,还可以在FLY工程中导入DEM数字高程模型数据,计算不 ...