初探信号槽

代码如下:

 QPushButton *button=new QPushButton("quit");
QObject::connect(button,SIGNAL(clicked()),&a,SLOT(quit()));
button->show();

 QObject是所有类的根。Qt使用这个QObject实现了一个单根继承的C++。它里面有一个connect静态函数,用于连接信号槽。注意是静态函数::static。

发出信号的对象指针: button

SIGNAL 信号: clicked 点击鼠标新红

接收信号的对象指针: &a

槽函数SLOT: quit()

这种信号槽机制的原理就是指定两个对象,一个对象发出信号,一个对象响应信号。实际上和MFC的消息响应机制类似,信号就是消息,也就是可以自定义消息。槽函数就是消息响应函数,用来响应消息,做具体的任务。

组件布局

注意一点,在组件进行信号槽连接时,信号和槽如果有参数,必须加上!

QWidget* myWidget=new QWidget;
myWidget->setWindowTitle("Enter your age");

QSlider* mySlider=new QSlider(Qt::Horizontal);
QSpinBox *mySpinBox=new QSpinBox;
mySlider->setRange(0,100);
mySpinBox->setRange(0,100);

QSlider* mySlider1=new QSlider(Qt::Horizontal);
QSpinBox *mySpinBox1=new QSpinBox;
mySlider1->setRange(0,100);
mySpinBox1->setRange(0,100);

QObject::connect(mySpinBox,SIGNAL(valueChanged(int)),mySlider,SLOT(setValue(int)));
QObject::connect(mySlider,SIGNAL(valueChanged(int)),mySpinBox,SLOT(setValue(int)));
mySpinBox->setValue(50);

QObject::connect(mySpinBox1,SIGNAL(valueChanged(int)),mySlider1,SLOT(setValue(int)));
QObject::connect(mySlider1,SIGNAL(valueChanged(int)),mySpinBox1,SLOT(setValue(int)));

QHBoxLayout *myHoxlayout=new QHBoxLayout;
myHoxlayout->addWidget(mySlider);
myHoxlayout->addWidget(mySpinBox);
QVBoxLayout *myVoxlayout=new QVBoxLayout;
myVoxlayout->addLayout(myHoxlayout);
myVoxlayout->addWidget(mySlider1);
myVoxlayout->addWidget(mySpinBox1);
myWidget->setLayout(myVoxlayout);
myWidget->show();

  布局的关键在于QHBoxLayout QVBoxLayout。layout使用addWidget添加组件,使用addLayout可以添加子布局。窗口通过setLayout进行布局设置。

程序运行结果

API文档的使用

QT的文档可以在可以在Qt的安装目录下的bin里面的assistant.exe中看到Qt的文档。

QT学习笔记2的更多相关文章

  1. qt学习笔记(五) QGraphicsPixmapItem与QGraphicsScene的编程实例 图标拖动渐变效果

    应大家的要求,还是把完整的project文件贴出来,大家省点事:http://www.kuaipan.cn/file/id_48923272389086450.htm 先看看执行效果,我用的群创7寸屏 ...

  2. Qt学习笔记-Widget布局管理

    Qt学习笔记4-Widget布局管理       以<C++ GUI Programming with Qt 4, Second Edition>为参考 实例:查找对话框 包含三个文件,f ...

  3. QT学习笔记(一)——Helloworld

    QT学习笔记(一)--Helloworld 一.调试的基本方法: Log调试法 --在代码中加入一定的打印语句 --打印程序状态和关键变量的值 断点调试法: --在开发环境中的对应代码行加上断点 -- ...

  4. qt学习笔记(七)之数据库简介(所有支持数据库类型的列表)

    笔者最近用Qt写公司的考勤机.本来要求是要基于frameBuffer下用自己开发的easyGUI来进行上层应用开发,但是考虑到easyGUI提供的接口不是很多,就考虑用Qt来开发,顺带练练手. 废话不 ...

  5. Qt学习笔记(2)-利用StackWidget实现选项卡式页面

    学习笔记第二篇,利用Qt实现选项卡式的页面,效果如图1.1-图1.3所示.程序实现的功能是通过点击状态栏实现不同页面的切换,实际上Qt中自带有Tab选项卡式的控件,本文利用StackWidge实现类似 ...

  6. Qt学习笔记(1) hello world

    Qt的简介: Qt是一个跨平台的C++ GUI库实现,原本只是以为它只提供一些图形接口,看来我还是低估了它,采用文档Qt学习之路2开始学习,不知道这个文档是不是有点老了,管他呢,先了解下. 搭建环境: ...

  7. 【Qt学习笔记】Qt+VS2010的配置

    http://blog.csdn.net/jocyln9026/article/details/8575218 关于Qt Qt是1991年由Trolltech公司开发的一个跨平台的C++图形用户界面应 ...

  8. QT学习笔记1

    不准备用MFC了,想切换到QT.所以跟着网上的一个笔记学习. 1 开发环境是VS2008+QT4.7+VassistX 具体如何配置看这个帖子:http://qimo601.iteye.com/blo ...

  9. QT学习笔记(一)——ui的认识

    ////////////2015/08/06/////////////////// ///////////by xbw////////////////////////// //////////环境 Q ...

  10. 【Qt学习笔记】窗口部件整理

    关于Qt中窗口部件的学习 今天开始学习Qt的窗口部件,领略一下Qt的神奇之处,记得2012年的那年冬天,我还学Java呢,现在基本上和Java说再见了,不过对于嵌入式的开发Qt还是举足轻重的,我想趁着 ...

随机推荐

  1. display:block 不起作用

    jquery中$("#Main").css("display","none"); $("#Day").css('disp ...

  2. 让你的Android程序更省电

    app主要耗电的原因如下: 1 cpu频繁的运转 -----控制线程 2  大数据量的传输----- 数据压缩传输 3  不停的在网络间切换------------判断网络状体 4 人开发的程序后台都 ...

  3. Sensor(ACCELEROMETER)

    package com.example.sensor01; import java.util.List; import android.hardware.Sensor; import android. ...

  4. STC12C5A60S2笔记1(管脚定义)

    STC12C5A60S2管脚定义 管脚1:标准IO口P1.0.ADC0 模数转换通道0.CLKOUT2 波特率发生器的时钟输出 管脚2:标准IO口P1.1.ADC1 模数转换通道1 管脚3:标准IO口 ...

  5. WPF,Silverlight与XAML读书笔记第四十五 - 外观效果之模板

    说明:本系列基本上是<WPF揭秘>的读书笔记.在结构安排与文章内容上参照<WPF揭秘>的编排,对内容进行了总结并加入一些个人理解. 模板允许用任何东西完全替换一个元素的可视树, ...

  6. 全面理解Javascript闭包和闭包的几种写法及用途

    好久没有写博客了,过了一个十一长假都变懒了,今天总算是恢复状态了.好了,进入正题,今天来说一说javascript里面的闭包吧!本篇博客主要讲一些实用的东西,主要将闭包的写法.用法和用途.  一.什么 ...

  7. SOA服务设计与实现的几个语言无关的原则速记

    一.SOA定义 SOA即面向服务架构(Service-Oriented Architecture).在SOA中,一切皆服务.一个服务是通过消息交换来调用的程序,一个信息系统是共同完成一个特定任务的一组 ...

  8. Azure China (4) 管理Azure China Storage Account

    <Windows Azure Platform 系列文章目录> Update 2015-05-10 强烈建议使用AzCopy工具,AzCopy命令行工具,是经过优化的.高性能Azure S ...

  9. http 各个状态码及对应的java 编程

    http的状态? 200 301 302 400 404 500 501 等等 如何编码? 其实这个是web服务器的范畴.服务器处理各个请求的时候,如果正常, 自然就是200 http://www.c ...

  10. Oracle动态执行语句

      一.为什么要使用动态执行语句? 由于在PL/SQL 块或者存储过程中只支持DML语句及控制流语句,并不支持DDL语句,所以Oracle动态执行语句便应允而生了.关于DDL与DML的区别,请参见:D ...