您当前的位置: 首页 >  令狐掌门 ar

QMdiArea在多窗口切换时无法接收键盘事件

令狐掌门 发布时间:2021-01-11 22:32:04 ,浏览量:4

        QMdiArea的用途很多,例如我们用的开发环境,都是多文档的 形式,可以用这个类来实现,不过也一些坑,例如标题栏需要自己定制,达不到浏览器那种效果,键盘事件的接收可能需要自己处理,例如, 做一个文本编辑软件,在切换窗口时会触发subWindowActivated信号,然后根据各个子窗口 对象,设置相关属性。

connect(ui.mdiArea, &QMdiArea::subWindowActivated, [=](QMdiSubWindow *pSub) {
			FileWindow* pWindow = GetActiveFileWindow();
			QList wList = ui.mdiArea->subWindowList();
			for (auto window : wList)
			{
				QWidget* pWidget = (FileWindow*)window->widget();
				if (pWidget != pWindow)
				{
					pWidget->releaseKeyboard();
				}
			}

			if (pWindow != nullptr)
			{
				pWindow->grabKeyboard();
				pWindow->setAttribute(Qt::WA_InputMethodEnabled);
				pWindow->setAttribute(Qt::WA_KeyCompression);
				pWindow->setFocusPolicy(Qt::WheelFocus);
			}
		});

        如果在子窗口中调用了grabKeyboard, 切换后要 releaseKeyboar

关注
打赏
1688896170
查看更多评论

令狐掌门

暂无认证

  • 4浏览

    0关注

    485博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文
立即登录/注册

微信扫码登录

0.0945s