启动时Qt FullScreen

时间:2013-11-06 16:49:42

标签: c++ macos qt fullscreen

我想在全屏启动应用程序(MacOS 10.8.x,Qt 5.1.1,C ++),具体取决于设置:

的main.cpp

#include "MainWindow.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.showFullScreen();

    return a.exec();
}

MainWindow.cpp

#include "MainWindow.h"
#include "ui_MainWindow.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

MainWindow::~MainWindow()
{
    delete ui;
}

MainWindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

private:
    Ui::MainWindow *ui;
};

#endif // MAINWINDOW_H

设置搭配非常完美,就像魅力一样。但this->showFullScreen()做了一些非常难看的事情:

  1. 全屏显示窗口
  2. 在中心显示正常尺寸的窗口
  3. 将窗口缩放到全屏
  4. 如果需要,我可以提供视频。怎么避免这个?

    编辑:

    添加视频here,在没有设置的情况下制作了更好的代码

7 个答案:

答案 0 :(得分:18)

我已经遇到过这个问题,一个非常好的解决方案是将全屏切换延迟一秒(使用 QTimer ):

QTimer::singleShot(0, this, SLOT(showFullScreen()));

答案 1 :(得分:10)

您可以尝试QMainWindow::showFullScreen();

{
    ui->setupUi(this);
    QMainWindow::showFullScreen();

}

答案 2 :(得分:8)

如果您希望将应用打开为最大化窗口,请使用以下内容:

Mainwindow w;
w.setWindowState(Qt::WindowMaximized);
w.show();

如果您希望将应用打开为全屏窗口,请使用以下内容:

Mainwindow w;
w.setWindowState(Qt::WindowFullScreen);
w.show();

答案 3 :(得分:6)

QWidget状态应该可以帮到你。请遵循此Qt文档:QWidget::setWindowState

将应用程序置于全屏的方式:

MainWindow w;    
w.setWindowState(w.windowState() ^ Qt::WindowFullScreen);

由于

答案 4 :(得分:2)

尝试在showFullScreen()中致电showEvent()。我目前无法使用Qt 5.1.1检查它,但它与4.8.x

的效果相当不错

答案 5 :(得分:0)

我所做的只是用Qtimer将全屏开关延迟1秒。这不是最好的解决方案,但确实可以解决问题。祝你好运!

答案 6 :(得分:0)

我使用QWidget作为我的主窗口,但我完全可以使用这个简单的界限:

this->showMaximized();

运行时,它会立即平稳地填满整个屏幕。