我想我的應用程序設置爲全屏,並在後面的Qt 5.3,但我運行到Mac上的一些問題。當我使用showFullScreen()
,它進入全屏預期。它使用標準的Mac全屏模式,在單獨的桌面/空間中打開。然而,當我打電話showNormal()
從全屏模式返回時,應用程序窗口就會消失,我留下了一個灰色背景。我需要刷卡才能返回應用程序所在的常規桌面。QT 5.3的Mac全屏
這是Qt的一個bug或我做錯了什麼?我在OS X 10.9.3上。
我想我的應用程序設置爲全屏,並在後面的Qt 5.3,但我運行到Mac上的一些問題。當我使用showFullScreen()
,它進入全屏預期。它使用標準的Mac全屏模式,在單獨的桌面/空間中打開。然而,當我打電話showNormal()
從全屏模式返回時,應用程序窗口就會消失,我留下了一個灰色背景。我需要刷卡才能返回應用程序所在的常規桌面。QT 5.3的Mac全屏
這是Qt的一個bug或我做錯了什麼?我在OS X 10.9.3上。
下面是我的系統上正常工作(的Qt 5.3.1一個簡單的示例應用程序,的MacOS/X 10.9 .5)。它也適用於你嗎?如果是這樣,試着找出這個程序和你的程序有什麼不同。
您也可以在調用showNormal()之後嘗試調用show(),raise()和activateWindow(),看看這些事情是否有幫助。
// MyWindow.h
#ifndef MYWINDOW_H
#define MYWINDOW_H
#include <QAction>
#include <QLabel>
#include <QTimer>
#include <QTime>
#include <QMainWindow>
class MyWindow : public QMainWindow
{
Q_OBJECT
public:
MyWindow();
private slots:
void goFS();
void goNormal();
private:
QAction * fsAct;
QAction * normAct;
};
#endif // MYWINDOW_H
...和.cpp文件:
// MyWindow.cpp
#include <QApplication>
#include <QMenuBar>
#include <QMenu>
#include <QAction>
#include "MyWindow.h"
MyWindow :: MyWindow()
{
fsAct = new QAction(tr("Full Screen Mode"), this);
connect(fsAct, SIGNAL(triggered()), this, SLOT(goFS()));
normAct = new QAction(tr("Normal Mode"), this);
connect(normAct, SIGNAL(triggered()), this, SLOT(goNormal()));
normAct->setEnabled(false);
QMenuBar * mb = menuBar();
QMenu * modeMenu = mb->addMenu(tr("ScreenMode"));
modeMenu->addAction(fsAct);
modeMenu->addAction(normAct);
}
void MyWindow :: goFS()
{
normAct->setEnabled(true);
fsAct->setEnabled(false);
showFullScreen();
}
void MyWindow :: goNormal()
{
normAct->setEnabled(false);
fsAct->setEnabled(true);
showNormal();
}
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MyWindow scr;
scr.show();
return a.exec();
}
我在Mac OS X(但不是Qt的4.8),使用Qt 5.2類似的問題。這似乎修復它:
if (showFullScreen)
{
widget->setParent(NULL);
widget->showFullScreen();
}
else
{
// changing the order of the showNormal() and setParent() results in a grey screen in Qt 5 on Mac
widget->showNormal();
widget->setParent(widgetParent); // reset the original parent
}
感謝您的響應!我試了一下,但不幸的是我看到了相同的行爲。 –