`
美丽的小岛
  • 浏览: 310683 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

QSignalMapper的应用[转]

    博客分类:
  • QT
 
阅读更多

#include <Qtgui>
#include <QString>

#include "mysignalmap.h"

mySignalMap::mySignalMap( QWidget *parent ) : QWidget( parent )
{
QString buttontext = "btn1,btn2";
QStringList texts = buttontext.split( "," );
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 );
}

connect( signalMapper, SIGNAL( mapped(const QString &) ), this, SLOT(handle(const QString &)) );

setLayout( gridLayout );
}
void mySignalMap::handle( const QString & mybtn )
{
   QMessageBox::information( this ,"Clicked", mybtn + "is clicked" );
}

本例主要是QSignalMapper的应用:
QSignalMapper可以看做是信号的翻译和转换器,他可以吧无参数的信号翻译成带int参数,QString参数,QObject参数或者
QWidget*参数信号。
这里我们把按钮信号(无参数)转换成带QString参数(按钮的名称)的信号,然后依靠QString类型的参数进行
处理操作。

例子中
1.
首先建立一个无参数的连接:
connect( button, SIGNAL( clicked() ), signalMapper, SLOT( map() ) );

2.
然后我们进行转换:
signalMapper->setMapping( button, texts[i] );
这里把信号转换为QString参数类型的信号,text[i]的内容就是要要传递的参数。

3.
最后我们把信号转发到最终的处理函数handle(信号槽)
connect( signalMapper, SIGNAL( mapped(const QString &) ), this, SLOT(handle(const QString &)) );
handle的参数就是由QSignalMapper转换过来的QString类型的参数text[i]的值。

分享到:
评论

相关推荐

    QSignalMapper的使用

    在实际应用中,QSignalMapper不仅限于QPushButton,还可以用于其他任何支持信号的Qt对象,比如QLineEdit、QComboBox等。只要确保信号源触发的信号能被QSignalMapper捕获,我们就能轻松地实现复杂界面中的信号与槽的...

    qt实现的一个简单的计算器

    在本文中,我们将深入探讨如何使用Qt框架实现一个功能丰富的计算器应用,包括基本的加减乘除运算以及单位转换功能。Qt是一个跨平台的应用程序开发框架,广泛应用于GUI(图形用户界面)编程,支持多种操作系统,如...

    Qt状态机实现动画

    QState类的addTransition方法可以设置这些转换,通常与QEvent或QSignalMapper配合使用。 4. **创建动画**:对于每个状态转换,我们可能需要一个或多个QPropertyAnimation实例。例如,我们可以创建一个改变按钮宽度...

    C++ 设计模式-基于QT4开源跨平台开发框架src

    8. **命令模式**:QT4的QCommand和QSignalMapper可以用来封装命令,实现命令的参数化、撤销/重做等功能,这在用户界面编程中非常有用。 9. **门面模式**:QT4的QApplication类可以看作是系统与应用程序之间的门面,...

    Qt 页面切换终极资料

    5. **QSignalMapper**:当你有多个相似的按钮或者页面需要对应不同的动作时,QSignalMapper可以帮助简化代码,通过信号映射实现一键多用。 6. **QLayout**:布局管理器在Qt中至关重要,它帮助你自动调整和定位页面...

    qt实现科大讯飞在线语音识别

    科大讯飞是中国领先的语音技术提供商,其API接口为开发者提供了强大的语音转文字服务。Qt是一个跨平台的C++图形用户界面应用程序开发框架,非常适合构建桌面和移动应用。 首先,我们需要理解Qt中的信号与槽机制。这...

    disa.rar_C Builder_DISA规约_disa_qt 工程_规约

    例如,开发者可能会使用QT的信号和槽机制来处理错误,通过`QSignalMapper`和`QErrorMessage`来传递和显示错误信息,这不仅符合DISA的异常安全原则,也充分利用了QT的特性。同时,对于内存管理,QT的智能指针如`...

    作业-QT-计算器

    对于计算器的逻辑部分,我们可能使用`QSignalMapper`或者直接连接`QPushButton`的`clicked()`信号到相应的槽函数。这些槽函数会执行特定的数学运算。QT的信号和槽机制使得我们可以将UI交互与业务逻辑解耦,保持代码...

    存款利息计算器.zip

    - **QSignalMapper**和**connect()**:实现信号和槽的连接,处理用户交互。 - **QTimer**:如果项目中涉及到定期更新或延时操作,可能会用到定时器。 - **QString**和**QMessageBox**:处理字符串和显示消息框。 ...

    qt for 海康sdk

    Qt是一个跨平台的C++图形用户界面库,广泛应用于桌面和移动设备应用开发。 首先,我们需要理解Qt的基本概念。Qt提供了丰富的控件和API,使得开发者可以创建出美观且功能强大的GUI应用。Qt5是Qt的最新版本,引入了...

    test-dome-control-power3.zip qt 样例代码 程控控制模块样例代码

    8. **信号处理**:QT的QSignalMapper和QSignalTransition等工具可以帮助管理和映射信号,简化复杂的事件处理逻辑。 9. **国际化与本地化**:QT的QTranslator和QLocale类支持应用程序的多语言环境,这对于面向全球...

    电子表格,支持打印功能MainWindow

    同时,`QSignalMapper`或者直接的信号槽连接可能被用来处理各种用户交互事件,确保程序的响应性和可扩展性。 总之,“电子表格,支持打印功能MainWindow”项目是QT框架下实现的一个高效、功能丰富的桌面应用。它...

    LED.zip_QT控制led_qt led_qt 界面

    可以使用`QSignalMapper`或`QPropertyAnimation`等工具来实现这些动态效果。 最后,为了实现“实时进行亮灭”,我们需要在后台线程中处理LED的控制逻辑,以免阻塞用户界面。QT提供`QThread`类来实现多线程编程,...

    信号与槽的两种深度玩法源码

    此外,还有发射信号的条件控制,如`QSignalMapper`用于根据参数映射到不同的信号,以及`QSignalBlocker`用于临时阻止信号的发射。这些工具帮助开发者更精确地控制信号与槽的交互。 总结来说,信号与槽机制是Qt框架...

    设计模式基础培训材料-面向对象设计原则与模式

    - 实现:使用`QSignalMapper`类来映射信号到槽。 以上概述了面向对象设计的基本原则以及23种设计模式,并通过Qt框架中的实例进行了简要说明。理解和应用这些原则和模式对于构建高质量的软件系统至关重要。

    使用Qt开发《智能灯光控制系统》的上位机软件.zip

    例如,你可以使用定时器(QTimer)来实现定时开关,或者使用QSignalMapper来处理多按钮的组合操作。 7. 整合所有组件:最后,将所有这些模块集成到一个可执行程序中,确保各部分之间的协调工作,如初始化网络连接、...

    qt画图程序 有两个例子,一个多文档,一个单文档

    8. **撤销/重做功能**:为了实现绘图操作的撤销/重做,可以使用QHistoryStack和QSignalMapper等类。每次画图操作都会被记录下来,当用户触发撤销或重做时,通过历史栈进行回退或前进。 9. **自定义图形项**:开发者...

    Programming with Qt(Qtopia培训TT公司内部文档)

    介绍信号映射器`QSignalMapper`的使用方法,它能够帮助开发者更方便地管理信号和槽的连接。 ##### 5. QEmbed (第287页) 简述QEmbed组件的功能及用途,以及如何在项目中正确使用它。 ##### 6. 源代码查找技巧 (第...

    Qt编程指南(C++)

    此外,还可以使用`QSignalMapper`来简化复杂场景下的信号和槽连接。 5. **Qt Designer与UI文件** Qt Designer是一个可视化工具,允许开发者拖放控件并设计GUI布局。设计完成后,可以导出为`.ui`文件,然后使用`uic...

    qt c++ 视频会议软件UI,该项目源码不包含核心视频通话

    - 使用QSignalMapper或直接连接信号和槽来处理用户交互事件。 - 通过QNetworkAccessManager发送网络请求,处理登录、注册和获取会议信息的逻辑。 - 将UI与业务逻辑分离,采用MVC(模型-视图-控制器)或MVVM(模型-...

Global site tag (gtag.js) - Google Analytics