当窗口处于全屏模式时,Qt 连接不起作用

Posted

技术标签:

【中文标题】当窗口处于全屏模式时,Qt 连接不起作用【英文标题】:Qt connect are not working when window is in fullscreen mode 【发布时间】:2016-12-04 01:59:31 【问题描述】:

我遇到了一些连接问题:

QAction* fs = new QAction(this);
fs->setShortcut(Qt::Key_F);
connect(fs, &QAction::triggered, this, &MainWindow::fullscreen);
menuBar()->addAction(fs);

而全屏功能是:

if(!fullscreenMode)

    mouseMoved=time(0);
    this->menuBar()->hide();
    this->showFullScreen();
    fullscreenMode=true;

else

    this->menuBar()->show();
    timeBar->show();
    controlBar->show();
    this->showNormal();
    fullscreenMode=false;
    timeBar->visibilityChanged(true);
    controlBar->visibilityChanged(true);


我无法使用快捷方式(F 按钮)返回正常模式,但我可以使用相同功能的双击来实现。我的错在哪里?

【问题讨论】:

【参考方案1】:

答案是:

QShortcut* fullscreenShortcut = new QShortcut(QKeySequence(Qt::Key_F),this,SLOT(fullscreen()));

【讨论】:

【参考方案2】:

主窗口创建时是否初始化了“fullscreenMode”?

这里有两个问题:

    未定义的 fullscreenMode 导致意外结果。

    QAction 触发传递一个布尔参数,如果你的函数 - “全屏”也有一个参数,“全屏”将捕获从 trigger() 传递的这个参数。另外,如果动作是可检查的,则布尔参数在动作被选中时为真,如果动作未被选中,则布尔参数为假。

希望这些能有所帮助。

【讨论】:

感谢您的关注。嗯,在 MainWindow 构造函数中已经初始化了 fullscreenMode,而我的“全屏”函数没有参数。

以上是关于当窗口处于全屏模式时,Qt 连接不起作用的主要内容,如果未能解决你的问题,请参考以下文章

当应用程序处于后台并且网络连接丢失时,位置更新计时器不起作用?

当手机处于睡眠模式时,为什么用于来电的广播接收器在棒棒糖上不起作用

当应用程序使用 ios 8 在前台时,调度程序 UILocalNotification 不起作用

退出 html5 全屏模式时 css 媒体查询不起作用 - safari

设备处于睡眠模式时的 URLConnection 不起作用

%matplotlib qt 不起作用