《QT5自学教程 4.wps》由会员分享,可在线阅读,更多相关《QT5自学教程 4.wps(5页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、QT5自学教程(自学教程(4)信号和槽信号和槽 信号和槽是 QT 中的重要概念,那么究竟什么是信号和槽呢?信号和槽用于对象之间的通信。信号和槽机制是 QT 的一个重要特征,可能是不同于大多数由其他框架提供的功能的一部分。在 GUI 编程中,当我们改变一个部件,我们经常要通知其他部件。更一般地,我们希望任何一类对象之间能够相互通信。例如,如果用户单击关闭按钮,我们可能希望窗口的 close()函数被调用。下面我们通过一个例子来介绍信号和槽的机制。1.建立一个 gui 项目:2.在 gui 界面布局中放置一个进度条(progressbar)和水平滑条(Vertical Slider):3.有两种方
2、法来建立信号与槽的关系(此处即进度条与水平滑条之间的关系):(1)在 gui 界面中编辑:运行结果如下:(2)用代码对其进行编辑在 gui 界面中再增加一个进度条(用于后面例子的功能实现),界面布局最终如下:程序如下:mainwindow.h 程序:cppview plaincopy#ifndef MAINWINDOW_H#define MAINWINDOW_H#include namespace Ui class MainWindow;class MainWindow:public QMainWindow Q_OBJECT public:explicit MainWindow(QWidget
3、*parent=0);MainWindow();private:Ui:MainWindow*ui;#endif/MAINWINDOW_H mainwindow.cpp 程序:cppview plaincopy#include mainwindow.h#include ui_mainwindow.h MainWindow:MainWindow(QWidget*parent):QMainWindow(parent),ui(new Ui:MainWindow)ui-setupUi(this);/connect 函数创建一个发送端对象给定类型信号和接收对象的方法之间的连接。返回一个连接的句柄,该句柄可
4、以在稍后用于取消两个对象的连接关系 /当指定信号和方法时,你必须使用宏 SIGNAL()和 SLOT()connect(ui-horizontalSlider,SIGNAL(valueChanged(int),ui-progressBar,SLOT(setValue(int);connect(ui-horizontalSlider,SIGNAL(valueChanged(int),ui-progressBar_2,SLOT(setValue(int);/disconnect 函数断开发送对象的信号和接收对象方法之间的连接。如果连接被顺利移除,返回 true;否则返回 false。/当任意一个包
5、含的对象被销毁时,信号-槽之间的连接将被自动移除。disconnect(ui-horizontalSlider,SIGNAL(valueChanged(int),ui-progressBar,SLOT(setValue(int);MainWindow:MainWindow()delete ui;main.cpp 程序:cppview plaincopy/2014/7/27 Wayne HDU /问题描述:信号和槽的例子,实现利用水平滑动条的移动来控制进度条的长度#include mainwindow.h#include int main(int argc,char*argv)QApplication a(argc,argv);MainWindow w;w.show();return a.exec();运行结果(其中一个进度条受水平滑动条的控制,另一个不受控制):小结小结 在这一节中粗略介绍了什么是信号和槽,信号和槽的概念在 QT 中是至关重要的,需要我们在以后的编程中不断去深刻的领会。PS:最近回家休息了,回学校又该好好干活了,o()o。
限制150内