QT Creator应用程序开发——信号与槽
目录
- 一、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应用程序开发——信号与槽相关推荐
- QT Creator应用程序开发——01简单按钮显示
目录 前言 一.新建项目 二.设计ui页面和编写程序 (一)设计ui页面 1.设置按钮 2.设置标签 3.设置转到槽 (二)编写程序 (三)构建运行 (三)测试 结语 前言 本系列文章,是经博主的QT ...
- QT Creator应用程序开发——QT程序设计基本知识
目录 一.Application模板介绍 二.选择类信息 三.Qt Widgets Application项目示例 (一).pro 项目管理文件 (二).h 头文件 (三).cpp 源文件 (四).u ...
- qt控制程序打开记事本_基于QT记事本应用程序开发.doc
基于QT记事本应用程序开发 基于QT记事本应用程序开发 [摘要]本文通过对嵌入式Linux和Qt的分析,利用Qt在源代码级上能够实现跨平台特性,在源代码开放的Linux操作系统上,根据嵌入式应用的特点 ...
- QT核心机制3:信号与槽
个人博客对应地址:QT核心机制3:信号与槽 写在前面 这篇文章基本是对Qt官方文档某些章节的翻译理解了,翻译这些章节的原因是我认为这些是Qt中最核心的东西,翻译的过程也就是强迫自己认真去读它们的过程, ...
- Qt Creator将对象连接到信号
Qt Creator将对象连接到信号 将对象连接到信号 添加信号处理程序 将对象连接到信号 为了在特定对象发出特定信号时接收通知,对象定义应声明一个名为on 的信号处理程序,其中是信号的名称,首字母大 ...
- Qt 多线程中地信号与槽
Qt 多线程中地信号与槽 函数原型: 1 QObject::connect(const QObject *sender, const char *signal, const QObject *rece ...
- Fedora12下搭建Qt Creator的ARM开发环境 并 移植Qt4.6.2到Micro2440
Fedora12下搭建Qt Creator的ARM开发环境 并 移植Qt4.6.2到Micro2440 参考: http://hi.baidu.com/jiyeqian/blog/item/f46d2 ...
- 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环境时 ...
- 最新QT从入门到实战完整版(08.qt中的坐标系-09 信号和槽-点击按钮关闭窗口_)
最新QT从入门到实战完整版(08.qt中的坐标系-09 信号和槽-点击按钮关闭窗口_) 一.08.qt中的坐标系 二,09 信号和槽-点击按钮关闭窗口_ 来自 一.08.qt中的坐标系 二,09 信号 ...
最新文章
- android 自定义弹窗,Android自定义弹窗
- 'numpy.float64' object cannot be interpreted as an integer
- ServiceStack.Redis常用操作 - 事务、并发锁
- C# —— 序列化与反序列化
- 6-搭建一个私有registry
- ICCV 2019 | 视频综合理解:行为识别、场景识别以及视频综述
- Redis源码阅读 (备份机制)
- Qml文件的两种加载方式
- 华硕主板放电才能点亮
- 我们应当怎样做需求分析
- gsp计算机设施设备表格,GSP计算机系统内审表
- 现代优化算法 (二): 遗传算法 及应用举例
- 【无标题】输入圆锥体半径r以及高度h,并计算它的体积。
- 迅雷离线下载脚本 — LinuxTOY
- 还有没换国旗头像的么 头像领取方法 不要再@微信官方啦
- 小程序 界面响应速度优化
- 科大奥锐干涉法测微小量实验的数据,大学物理实验教材课后思考题答案 (4)
- 软件加入使用时间_Adobe CC 2020 系列软件更新(Adobe Zii 2020 5.2.1)| Mac软件天堂
- 用计算机在记事本做图案,记事本如何自定义制作CAD图案填充
- lt;html xmlns=http://www.w3.org/1999/xhtmlgt;