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));
相关推荐
无影无踪的青蛙16 分钟前
[Python] 贪心算法简单版
开发语言·python·贪心算法
yufei-coder30 分钟前
配置Next.js环境 使用vscode
开发语言·javascript·vscode·next.js
电科_银尘31 分钟前
【Matlab】-- 基于MATLAB的飞蛾扑火算法与反向传播算法的混凝土强度预测
开发语言·算法·matlab
wen__xvn1 小时前
Codeforces Round 1014 (Div. 2)2092A - Kamilka and the Sheep c++
开发语言·c++·算法
编程之升级打怪1 小时前
自定义C语言变量转换库
c语言·开发语言
_乐多_1 小时前
python:将mp4视频快进播放,并保存新的视频
开发语言·python·音视频
Quz1 小时前
QML输入控件:Dial联动、音频均衡器的实现 (3)
qt
Jason-河山2 小时前
如何使用Python爬虫获取1688商品评论?
开发语言·爬虫·python
观无2 小时前
c#中的virtual方法
开发语言·c#