【问题标题】:Qt connect are not working when window is in fullscreen mode当窗口处于全屏模式时,Qt 连接不起作用
【发布时间】: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 按钮)返回正常模式,但我可以使用相同功能的双击来实现。我的错在哪里?

【问题讨论】:

    标签: c++ qt user-interface signals-slots


    【解决方案1】:

    答案是:

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

    【讨论】:

      【解决方案2】:

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

      这里有两个问题:

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

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

      希望这些能有所帮助。

      【讨论】:

      • 感谢您的关注。嗯,在 MainWindow 构造函数中已经初始化了 fullscreenMode,而我的“全屏”函数没有参数。
      猜你喜欢
      • 2019-06-21
      • 1970-01-01
      • 2018-05-22
      • 1970-01-01
      • 1970-01-01
      • 2014-08-16
      • 1970-01-01
      • 2020-06-21
      • 1970-01-01
      相关资源
      最近更新 更多