QT QSignalMapper
来源:互联网 发布:dsp快速傅里叶变换算法 编辑:程序博客网 时间:2024/05/17 02:20
信号对应槽
比如:鼠标点击按钮信号,对应自己定义的槽。如果想信号发送给槽的参数是某些有用的信息,比如:按钮的内容,怎么办呢?这个时候可以用
QSignalMapper
信号-----> QSignalMapper---------> 槽 (它在中间插了一杠子)
直接用qt帮助中的例子做说明:
a.h
#include <QWidget>#include <QSignalMapper>class ButtonWidget : public QWidget{ Q_OBJECTpublic: ButtonWidget(const QStringList &texts, QWidget *parent = 0);signals: void clicked(const QString &text);private: void onCliecked(const QString &text); QSignalMapper *signalMapper;};
a.cpp
#include <QGridLayout>#include <QPushButton>#include <QMessageBox>#include "a.h"ButtonWidget::ButtonWidget(const QStringList &texts, QWidget *parent) : signalMapper(NULL){ signalMapper = new QSignalMapper(this); QGridLayout *gridLayout = new QGridLayout; for (int i = 0; i < texts.size(); ++i) { QPushButton *button = new QPushButton(texts[i]); // 本来应该连接自定义槽,这里却连接的是signalMapper connect(button, SIGNAL(clicked()), signalMapper, SLOT(map())); // 发送的东西放到映射中(按钮和其内容对应) signalMapper->setMapping(button, texts[i]); gridLayout->addWidget(button, i / 3, i % 3); } // 这里通过signalMapper连接自定义槽 connect(signalMapper, static_cast<void (QSignalMapper::*)(const QString&)>(&QSignalMapper::mapped), this, &ButtonWidget::onCliecked);// connect(signalMapper, static_cast<void (QSignalMapper::*)(const QString&)>(&QSignalMapper::mapped),// this, &ButtonWidget::onCliecked); setLayout(gridLayout);}void ButtonWidget::onCliecked(const QString &text){ QMessageBox::information(this, "title", text);}
main.cpp
#include <QApplication>#include "a.h"int main(int argc, char *argv[]){ QApplication app(argc, argv); ButtonWidget bw(QStringList() << "a" << "b" << "c" << "d" << "e" << "f", NULL); bw.show(); app.exec(); return 0;}
注意:如果把上面的注释代码打开,点一次按钮就会相应两次槽,这点需要注意。。。。
阅读全文
1 0
- QT QSignalMapper
- Qt学习笔记 - QSignalMapper
- Qt 学习笔记 - QSignalMapper
- QT——QSignalMapper
- QT之QSignalMapper
- QT——QSignalMapper
- QSignalMapper
- QSignalMapper
- QSignalMapper
- QSignalMapper
- QSignalMapper
- QSignalMapper
- QSignalMapper
- QT中QSignalMapper类的用法
- 【QT开发】信号转发器QSignalMapper的使用
- QT 巧用QSignalMapper分类有序地处理大量信号
- QT中QSignalMapper类信号转发器的使用和说明
- Qt编程12:QSignalMapper多对一信号影射简单使用
- mysql sql语句大全
- dinic(当前最优模板)
- 【nginx】nginx的安装
- 深入理解JVM(六)——JVM性能调优实战
- 分布式系统大数据量计算抢占式任务调度
- QT QSignalMapper
- 从内核文件系统看文件读写过程
- [BZOJ]2882 工艺 最小表示法
- basic python2(conditions & control flow)
- 浅谈微博精准推荐——用户行为挖掘与相似用户挖掘
- python 设置网页全屏显示
- json数据(字符串)无法放入文本框(input)中
- 蓝桥杯算法训练 未名湖边的烦恼
- Dialog对话框