QSignalMapper的使用
来源:互联网 发布:迁移阿里云rds到aws 编辑:程序博客网 时间:2024/06/06 03:34
QSignalMapper可以看作是信号的翻译和转发器,可以只写一个Slot函数,处理许多个不同的信号。
例子:
class SignalMapperTest : public QMainWindow{Q_OBJECTpublic:SignalMapperTest(QWidget *parent = 0);~SignalMapperTest();private slots: void onBtnClick( int BtnId );void onMenuTriggered( QString str);void on_update_window_menu();private:Ui::SignalMapperTestClass ui;QSignalMapper* pSignalMapper;QPushButton* MyButtons[7];QAction* MyActions[7];int currentMenuIndex;};
SignalMapperTest::SignalMapperTest(QWidget *parent): QMainWindow(parent){ui.setupUi(this);pSignalMapper = new QSignalMapper( this );connect( pSignalMapper, SIGNAL(mapped( int)),this, SLOT( onBtnClick(int) ));connect( pSignalMapper, SIGNAL( mapped( QString )),this, SLOT(onMenuTriggered( QString )));connect(ui.menu_W, SIGNAL(aboutToShow()), this, SLOT(on_update_window_menu()));MyButtons[0] = ui.Btn1;MyButtons[1] = ui.Btn2;MyButtons[2] = ui.Btn3;MyButtons[3] = ui.Btn4;MyButtons[4] = ui.Btn5;MyButtons[5] = ui.Btn6;MyButtons[6] = ui.Btn7;for (int i = 0; i < 7; ++i){connect(MyButtons[i], SIGNAL( clicked()), pSignalMapper, SLOT(map() ) );pSignalMapper->setMapping( MyButtons[i], i);}//for (int j = 0; j < 7; ++j){MyActions[j] = ui.menu_W->addAction(QString("Action%1").arg(j));MyActions[j]->setCheckable(true);connect( MyActions[j], SIGNAL(triggered()), pSignalMapper, SLOT(map()));pSignalMapper->setMapping( MyActions[j], QString("Action%1").arg(j));}currentMenuIndex = 0;}SignalMapperTest::~SignalMapperTest(){}void SignalMapperTest::onBtnClick(int BtnId){if (BtnId >= 0 && BtnId < 7){ui.lineEdit->setText(MyButtons[BtnId]->text() );update();}}void SignalMapperTest::on_update_window_menu(){for (int i = 0; i < 7; ++i){MyActions[i]->setChecked(i == currentMenuIndex );}}void SignalMapperTest::onMenuTriggered(QString str){for (int i = 0; i < 7; ++i){QString str1 = MyActions[i]->text();if (str == str1){currentMenuIndex = i;}}ui.lineEdit->setText( str);update();}
效果:当点击右边Button时,左边lineEdit显示当前Button的内容。比如点击Btn5,lineEdit中显示“Btn5”。当点击窗口菜单项时,lineEdit显示当前触发的菜单动作。
0 0
- QSignalMapper的使用
- QSignalMapper类的使用
- QSignalMapper的使用
- QSignalMapper类的使用
- QSignalMapper的简单使用
- QSignalMapper的简单使用
- QSignalMapper的使用
- QSignalMapper使用
- 【QT开发】信号转发器QSignalMapper的使用
- QSignalMapper 使用方法 参见QSignalMapper中使用文档
- 如何使用QSignalMapper
- QSignalMapper类使用
- QT中QSignalMapper类信号转发器的使用和说明
- QSignalMapper类的用法
- QSignalMapper的应用
- QSignalMapper的应用
- QSignalMapper
- QSignalMapper
- maven下载中断。
- 部署任务和演练
- Oracle中的导入导出
- Git本地容器常用指令总结
- Android急速模拟器Genymotion安装指北
- QSignalMapper的使用
- Netty权威指南之文件传输
- 前后端分离了,然后呢?
- 71.根据公式求值
- 解决Windows 7不能通过拖曳打开sql文件
- linux进程(fork/vfork)与wait/waitpid
- 查看Oracle执行计划的几种方法
- Dozer开发手册
- Git之反悔