QT:信号映射器

背景:希望通过点击菜单对应的选项切换子窗口的焦点

属于是同一个信号与槽函数触发不同的结果

1.创建信号映射器

cpp 复制代码
QSignalMapper *m_WndMapper;//信号映射器

2.信号映射器和槽函数连接初始化

将第3步的自定义槽函数与mapped信号建立连接

cpp 复制代码
m_WndMapper = new QSignalMapper(this);
connect(m_WndMapper,SIGNAL(mapped(QWidget*)),
        this,SLOT(setActivateSubWindow(QWidget*)));

3.创建子窗口切换的槽函数

cpp 复制代码
void setActivateSubWindow(QWidget*);

实现槽函数:使用qobject_cast对窗体进行转换,转成mdiarea的子窗体

cpp 复制代码
void MainWindow::setActivateSubWindow(QWidget *wnd)
{
    if(!wnd)
    return;
    ui->mdiArea->setActiveSubWindow(qobject_cast<QMdiSubWindow*>(wnd));

}

4.添加子窗口函数中编写子窗口与菜单选项的map绑定的代码

cpp 复制代码
connect(menuitem_act,SIGNAL(triggered(bool)),
                m_WndMapper,SLOT(map()));

m_WndMapper->setMapping(menuitem_act,wnds.at(i));
相关推荐
西阳未落2 小时前
C++基础(21)——内存管理
开发语言·c++·面试
我的xiaodoujiao2 小时前
Windows系统Web UI自动化测试学习系列2--环境搭建--Python-PyCharm-Selenium
开发语言·python·测试工具
callJJ2 小时前
从 0 开始理解 Spring 的核心思想 —— IoC 和 DI(2)
java·开发语言·后端·spring·ioc·di
hsjkdhs4 小时前
万字详解C++之构造函数析构函数
开发语言·c++
Lin_Aries_04214 小时前
容器化简单的 Java 应用程序
java·linux·运维·开发语言·docker·容器·rpc
techdashen5 小时前
12分钟讲解Python核心理念
开发语言·python
山海不说话5 小时前
Java后端面经(八股——Redis)
java·开发语言·redis
郝学胜-神的一滴5 小时前
谨慎地迭代函数所收到的参数 (Effective Python 第31条)
开发语言·python·程序人生·软件工程
feiyangqingyun6 小时前
基于Qt和FFmpeg的安卓监控模拟器/手机摄像头模拟成onvif和28181设备
android·qt·ffmpeg
大虾别跑6 小时前
vc无法启动
java·开发语言