Qt基础: 信号和槽
来源:互联网 发布:多路访问网络 编辑:程序博客网 时间:2024/06/03 18:51
信号和槽用于两个对象之间的通信, 信号和槽机制是Qt 的核心特征, 也是Qt 不同于其他开发框架的最突出的特征.
注意点:
1使用signals 关键字声明信号;
signals 前不能使用 public, protected, private 限定符, 因为只有定义该信号的类以及其子类才可以发送该信号;
2
3信号只用声明,无需也不能进行定义,没有返回值, 只能使用 void 类型;
只有QObject 类及其子类才能使用信号和槽机制,故需要在类声明最开始处加 Q_OBJECT 宏.
4
Demo#ifndef SIGNALS_SLOTS_H#define SIGNALS_SLOTS_H#include <QDialog>namespace Ui {class signals_slots;}class QPushButton;class QSpinBox;class QLabel;//处理信号的对象class signals_slots : public QDialog{ Q_OBJECTpublic: signals_slots(QWidget *parent = 0); ~signals_slots();signals: //自定义信号 void dlgReturn(int);private slots: //自定义槽 void showValue(int value); void pushButton_clicked();private: Ui::signals_slots *ui; QPushButton *pushButton; QSpinBox *spinBox; QLabel *label;};#endif // SIGNALS_SLOTS_H///////////////////////////////////#include <QtGui>#include "signals_slots.h"#include "ui_signals_slots.h"signals_slots::signals_slots(QWidget *parent) : QDialog(parent), ui(new Ui::signals_slots){ ui->setupUi(this); QTextCodec::setCodecForTr(QTextCodec::codecForName("utf-8")); pushButton = new QPushButton(this); pushButton->setText(tr("发射信号")); spinBox = new QSpinBox(this); spinBox->setValue(50); label = new QLabel(this); label->setText("value="); QHBoxLayout *layout = new QHBoxLayout(this); layout->addWidget(spinBox); layout->addWidget(pushButton); layout->addWidget(label); setLayout(layout); //连接 按钮 和"按下按钮"槽 connect(pushButton, SIGNAL(clicked()), this, SLOT(pushButton_clicked())); //连接自定义信号和自定义槽 connect(this, SIGNAL(dlgReturn(int)), this, SLOT(showValue(int))); setWindowTitle(tr("自定义信号发送与接收"));}signals_slots::~signals_slots(){ delete ui;}void signals_slots::pushButton_clicked(){ int value = spinBox->value(); emit dlgReturn(value); //发射信号}void signals_slots::showValue(int value){ label->setText(tr("value=%1").arg(value));}
0 0
- Qt基础: 信号和槽
- QT基础(四)----信号和槽
- Qt信号和槽
- QT信号和槽
- QT信号和槽
- QT 信号和槽
- Qt ---- 信号和槽
- QT信号和槽
- QT--信号和槽
- QT 信号和槽
- QT 信号和槽
- QT 信号和槽 .
- Qt信号和槽
- 【Qt信号和槽】
- Qt信号和槽
- Qt信号和槽
- Qt信号和槽
- Qt 信号和槽
- fatal error C1083: 无法打开包括文件:“atlapp.h”: No such file or directory
- Android的布局ViewStub
- c++ 中__declspec 的用法
- magento 计划任务
- (1,eval)('this')释义
- Qt基础: 信号和槽
- 存储过程自学
- 使用Maven创建Web项目
- 神经网络研究,计算机是否能推理?
- pushlet单播与多播
- 6.9.1.2 qmgr_entry_done:清理活动数据
- 在网页中使用SVG技术
- spark1.6统一内存管理(UnifiedMemoryManager)
- 华为OJ-名字的漂亮度