如何以编程方式将窗口从全屏切换到正常模式?

Geo*_*int 1 qt fullscreen qtgui qt5

我正在使用此代码将窗口从正常模式切换到全屏:

void MainWindow::on_action_Fullscreen_triggered()
{
    showFullScreen();
}
Run Code Online (Sandbox Code Playgroud)

再次触发此操作时如何返回正常模式?

Log*_*uff 5

经过一分钟的 Qt 参考会议后:

void MainWindow::on_action_Fullscreen_triggered()
{
    isFullScreen() ? showNormal() : showFullScreen();
}
Run Code Online (Sandbox Code Playgroud)


小智 5

LogicStuff 的答案几乎是完美的,但它没有考虑窗口是否最大化。我个人总是使用这个小片段:

void main_window::toggle_fullscreen()
{
    isFullScreen() ?
        ((was_maximized_) ? showMaximized() : showNormal()), ui_->menu_view_toggle_fullscreen->setIcon(QIcon(":/fullscreen_enter")) :
        ((was_maximized_ = isMaximized()), showFullScreen(), ui_->menu_view_toggle_fullscreen->setIcon(QIcon(":/fullscreen_exit")));
}
Run Code Online (Sandbox Code Playgroud)

由于 showFullScreen() 也会影响 isMaximized() 返回值,因此我们必须在全屏之前将其保存在某处 (was_maximized_)。