目录

  • 一、QWidget基础窗口控件
  • 二、信号与槽实例
  • 三、信号与槽的补充知识

一、QWidget基础窗口控件

QWidget类是所有用户页面对象的基类,称为基础窗口控件,是一块矩形的页面可视区域,且它也可以包含其它控件,包含的子控件会在该区域中显示并覆盖,例如创建一个窗口对象w,由于窗口对象默认不会显示,必须要调用show()方法显示窗口:

MainWindow w;
w.show();


常用的QWidget类控件成员函数有以下(使用时需包含#include < QWidget >头文件):
1、void QWidget::setGeometry(int x,int y,int w,int h)用于设置窗口的位置和大小;
2、void QWidget::move(int x,int y)用于更改窗口的位置;
3、void QWidget::setWindowTitel(const QString &)用于设置窗口的标题;
4、void QWidget::seWindowState(Qt::WindowStates windowState)用于设置窗口当前的状态,如全屏,最小化等等。
例如设置一个窗口,x偏移为100,y偏移为200,大小为500×300的窗口,窗口的标题为“标题2022-3-3”,在mian.cpp中写代码:

//main.cpp
#include <QApplication>//包含一个应用程序的类的头文件
#include <QWidget>              //包含一个窗口类的头文件
int main(int argc, char *argv[])
{QApplication a(argc, argv);QWidget w;                                  //添加窗口w.setGeometry(100,200,500,300);             //设置窗口的位置和大小w.setWindowTitle("标题2022-3-3");           //设置窗口的标题w.show();return a.exec();
}

运行结果如下:

二、信号与槽实例

这里通过一个信号与槽的实例来理解信号与槽的相关知识。

例、通过信号与槽实现当用户点击一个按钮控件时,窗口关闭。

首先这里只用到main.cpp源文件,未用到.ui页面,整个程序步骤可以这样理解:
1、首先创建一个QWidget窗口,然后在该窗口上添加一个QPushButton按钮,这里就要通过#include包含这两个类的头文件,如下:

#include <QWidget>//包含一个窗口类的头文件
#include <QPushButton>//包含一个按钮类的头文件


然后添加一个窗口对象w以及一个按钮对象Button,由于是与用户交互的,要实现当点击按钮窗口关闭这一事件,所以按钮上的文字为“点击按钮关闭”,如下:

QWidget w;//添加窗口
QPushButton Button("点击按钮关闭",&w);//添加一个按钮


2、设置窗口与按钮的位置和大小,这里都是通过通过QWidget控件成员函数的setGeometry()来设置窗口与按钮的位置和大小,这里简单介绍一下该成员函数的含义:

这里的参数设置如下,可自行设置:

w.setGeometry(100,100,350,250);//设置窗口的位置和大小
Button.setGeometry(10,10,100,40);//设置按钮的位置和大小


3、通过connect()函数实现信号和槽
接下来就是设置信号与槽,是对信号做出的响应动作,信号和槽都可以通过函数表示,即信号函数槽函数,这里简单介绍一下实现信号与槽的函数connect(),函数connect() 是QObject类中的一个静态成员函数,通过QObject::connect()方式调用,它的参数解释如下:

也就是通过connect()函数将Button按钮的clicked()信号函数与w窗口的close()槽函数关联起来:

QObject::connect(&Button,&QPushButton::clicked,&w,&QWidget::close);


4、完整代码
由于没使用mainwindow.h头文件,所以第一行可以删去,main.cpp的完整代码如下:

//main.cpp
#include <QApplication>//包含一个应用程序的类的头文件
#include <QWidget>              //包含一个窗口类的头文件
#include <QPushButton>          //包含一个按钮类的头文件
int main(int argc, char *argv[])
{QApplication a(argc, argv);QWidget w;                                  //添加窗口QPushButton Button("点击按钮关闭",&w);        //添加一个按钮w.setGeometry(100,100,350,250);             //设置窗口的位置和大小Button.setGeometry(10,10,100,40);           //设置按钮的位置和大小QObject::connect(&Button,&QPushButton::clicked,&w,&QWidget::close);//实现信号与槽w.show();return a.exec();
}

4、执行代码,观察结果
点击左下角的绿色三角,执行代码,如下:

可看到出现的窗口位于屏幕的位置如代码中设置:

当鼠标点击按钮,窗口关闭:

达到实现要求!

三、信号与槽的补充知识

1、一个connect()函数只能关联一个信号函数和一个槽函数,程序中可包含多个connect()函数,从而实现以下操作:

另外还可以通过connect()函数中的method参数实现信号之间的关联,从而一次发出多个信号。
2、并不是所有的控件之间都可以通过信号与槽关联起来,控件类要直接或间接继承自QObject类,且控件类必须包含private属性的Q_OBJECT宏。

QT Creator应用程序开发——信号与槽相关推荐

  1. QT Creator应用程序开发——01简单按钮显示

    目录 前言 一.新建项目 二.设计ui页面和编写程序 (一)设计ui页面 1.设置按钮 2.设置标签 3.设置转到槽 (二)编写程序 (三)构建运行 (三)测试 结语 前言 本系列文章,是经博主的QT ...

  2. QT Creator应用程序开发——QT程序设计基本知识

    目录 一.Application模板介绍 二.选择类信息 三.Qt Widgets Application项目示例 (一).pro 项目管理文件 (二).h 头文件 (三).cpp 源文件 (四).u ...

  3. qt控制程序打开记事本_基于QT记事本应用程序开发.doc

    基于QT记事本应用程序开发 基于QT记事本应用程序开发 [摘要]本文通过对嵌入式Linux和Qt的分析,利用Qt在源代码级上能够实现跨平台特性,在源代码开放的Linux操作系统上,根据嵌入式应用的特点 ...

  4. QT核心机制3:信号与槽

    个人博客对应地址:QT核心机制3:信号与槽 写在前面 这篇文章基本是对Qt官方文档某些章节的翻译理解了,翻译这些章节的原因是我认为这些是Qt中最核心的东西,翻译的过程也就是强迫自己认真去读它们的过程, ...

  5. Qt Creator将对象连接到信号

    Qt Creator将对象连接到信号 将对象连接到信号 添加信号处理程序 将对象连接到信号 为了在特定对象发出特定信号时接收通知,对象定义应声明一个名为on 的信号处理程序,其中是信号的名称,首字母大 ...

  6. Qt 多线程中地信号与槽

    Qt 多线程中地信号与槽 函数原型: 1 QObject::connect(const QObject *sender, const char *signal, const QObject *rece ...

  7. Fedora12下搭建Qt Creator的ARM开发环境 并 移植Qt4.6.2到Micro2440

    Fedora12下搭建Qt Creator的ARM开发环境 并 移植Qt4.6.2到Micro2440 参考: http://hi.baidu.com/jiyeqian/blog/item/f46d2 ...

  8. Fedora9 下搭建Qt Creator的ARM开发环境并移植Qt4.6.3-books到mini2440

    Fedora9 下搭建Qt Creator的ARM开发环境并移植Qt4.6.3-books到mini2440 分类: LINUX 2011-10-18 16:44:56 因为在搭建ARM的qte环境时 ...

  9. 最新QT从入门到实战完整版(08.qt中的坐标系-09 信号和槽-点击按钮关闭窗口_)

    最新QT从入门到实战完整版(08.qt中的坐标系-09 信号和槽-点击按钮关闭窗口_) 一.08.qt中的坐标系 二,09 信号和槽-点击按钮关闭窗口_ 来自 一.08.qt中的坐标系 二,09 信号 ...

最新文章

  1. android 自定义弹窗,Android自定义弹窗
  2. 'numpy.float64' object cannot be interpreted as an integer
  3. ServiceStack.Redis常用操作 - 事务、并发锁
  4. C# —— 序列化与反序列化
  5. 6-搭建一个私有registry
  6. ICCV 2019 | 视频综合理解:行为识别、场景识别以及视频综述
  7. Redis源码阅读 (备份机制)
  8. Qml文件的两种加载方式
  9. 华硕主板放电才能点亮
  10. 我们应当怎样做需求分析
  11. gsp计算机设施设备表格,GSP计算机系统内审表
  12. 现代优化算法 (二): 遗传算法 及应用举例
  13. 【无标题】输入圆锥体半径r以及高度h,并计算它的体积。
  14. 迅雷离线下载脚本 — LinuxTOY
  15. 还有没换国旗头像的么 头像领取方法 不要再@微信官方啦
  16. 小程序 界面响应速度优化
  17. 科大奥锐干涉法测微小量实验的数据,大学物理实验教材课后思考题答案 (4)
  18. 软件加入使用时间_Adobe CC 2020 系列软件更新(Adobe Zii 2020 5.2.1)| Mac软件天堂
  19. 用计算机在记事本做图案,记事本如何自定义制作CAD图案填充
  20. lt;html xmlns=http://www.w3.org/1999/xhtmlgt;

热门文章

  1. 全世界最顶级的开发者都在使用什么数据库
  2. MQ 正在变成臭水沟
  3. 音视频技术开发周刊 | 224
  4. 音视频技术开发周刊 | 197
  5. 倒计时1天:AI在改变一切
  6. LiveVideoStack线上交流分享 (十五) —— 熟悉技术的边界,实现1+1+13
  7. 李大龙:音视频技术是互联网品质生活的连接器
  8. Janus流媒体服务器信令分析
  9. 二叉树的遍历(递归,非递归,Morris)
  10. 近二十年大数据行业怎么样?解决了什么?经历了什么?