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. 关于swagger——WebApi一个controller中出现多个Get是出现错误的处理

    如 /// <summary> /// 测试处理 /// </summary> public class TestController : ApiController { // ...

  2. .net DLL版本管理

    每个DLL打上版本号,方便识别维护

  3. 搭建Jetbrains家族IDE授权服务器

    虽然VS号称宇宙第一IDE但是也有不方便的地方,如果你也是C#码农我不得不向你推荐一个强大的插件ReSharper,他会是你的开发更加便捷,大大加快了开发的速度以及开发的乐趣.但是ReSharper并 ...

  4. SAP CRM 集类型(Set Type)与产品层次(Product Hierarchy)

    本文是产品与对象相关的部分SAP文档的翻译,不包含配置部分. 本文链接:https://www.cnblogs.com/hhelibeb/p/10112723.html 1,对象(Objects) 对 ...

  5. 【Teradata】扩容操作步骤

    第一章,前期准备(旧系统信息收集) 1.DBScontrol关键信息 DBSCONTROL系统参数是在节点上设置的,其参数直接关系到系统全局,需要慎重设置,新节点的关键参数要与生产库一致或者相容.主要 ...

  6. VMware Workstation中安装linux系统(CentOS)超详细(部分转载)

    首先准备一下VMware虚拟机和linux镜像文件,链接如下: 对于32位windows机子安装的是10.0.7版本的VMware Workstation,链接: https://pan.baidu. ...

  7. 做自己的docker镜像(基于ubuntu:16.04)

    基于ubuntu:16.04 apt-get update -y apt-get install sudo -y 换源 sudo apt-get install vim sudo vim /etc/a ...

  8. pydensecrf的inference.py代码的学习

    https://github.com/lucasb-eyer/pydensecrf/blob/master/examples/inference.py 1.运行 先运行看看实现的结果: (deeple ...

  9. Google Chrome等浏览器不允许关闭点击跟踪??

    hrome.Safari.Opera 和 Microsoft Edge 的新版本将不再允许用户关闭“链接审计( hyperlink auditing)”的功能.链接审计是一项 HTML 标准,被用于跟 ...

  10. [Unity优化]批处理04:MaterialPropertyBlock

    参考链接: https://blog.csdn.net/liweizhao/article/details/81937590 1.在场景中放一些Cube,赋予一个新材质,使用内置shader(Unli ...