QSignalMapper类使用
来源:互联网 发布:英雄无敌2 for mac 编辑:程序博客网 时间:2024/06/05 15:08
QSignalMapper类使用
如果我们想要将一组按钮的信号(比如说 clicked() 信号)与一个相同的槽函数相关联,可以有两种方法。
1.我们可以使用 connect 函数将每一个按钮的 clicked() 信号与这个槽函数关联。很明显,这样子很烦,不够聪明。
2.或者使用 QSignalMapper 类,如下所示:
buttonwidget.h 如下:
#ifndef BUTTONWIDGET_H#define BUTTONWIDGET_H#include <QWidget>#include <QSignalMapper>class ButtonWidget : public QWidget{ Q_OBJECTpublic: explicit ButtonWidget(const QStringList &texts, QWidget *parent = 0);signals:public slots: void clicked(const QString &text);private: QSignalMapper *signalMapper;};#endif // BUTTONWIDGET_H
buttonwidget.cpp 如下:
#include "buttonwidget.h"#include <QGridLayout>#include <QPushButton>#include <QDebug>ButtonWidget::ButtonWidget(const QStringList &texts, QWidget *parent) : QWidget(parent){ signalMapper = new QSignalMapper(this); QGridLayout *gridLayout = new QGridLayout; for(int i=0; i<texts.size(); ++i) { QPushButton *button = new QPushButton(texts[i]); connect(button, SIGNAL(clicked()), signalMapper, SLOT(map())); signalMapper->setMapping(button, texts[i]); gridLayout->addWidget(button, i/5, i%5); } connect(signalMapper, SIGNAL(mapped(QString)), this, SLOT(clicked(QString))); setLayout(gridLayout); for(int i=0; i<texts.size(); ++i) { qDebug() << signalMapper->mapping(texts.at(i)); }}void ButtonWidget::clicked(const QString &text){ qDebug() << text;}
0 0
- QSignalMapper类的使用
- QSignalMapper类的使用
- QSignalMapper类使用
- QSignalMapper使用
- QSignalMapper类
- QSignalMapper 使用方法 参见QSignalMapper中使用文档
- 如何使用QSignalMapper
- QSignalMapper的使用
- QSignalMapper的使用
- QSignalMapper的简单使用
- QSignalMapper的简单使用
- QSignalMapper的使用
- QT中QSignalMapper类信号转发器的使用和说明
- QSignalMapper类的用法
- QSignalMapper类……
- QSignalMapper
- QSignalMapper
- QSignalMapper
- Windows下Nginx的启动、停止等命令
- 第十三届北京师范大学程序设计竞赛决赛训练总结2017/5/8
- GIT、GITHUB、GITLAB简洁
- 【基于SSH框架的个人博客系统04】DAO层,Service层与Action层
- Java入门学习-理解I/O
- QSignalMapper类使用
- Struts2拦截器介绍
- 知识梳理
- 全面理解Java内存模型
- Eclipse启动Tomcat时,45秒超时解决方式
- Vijos P1974 金币【数列】
- [日常学习][C++]集合 set
- 缓存的主键的生成策略
- XTUExper数值计算方法 C语言实现