QT 5.3 Mac Full Screen
QT 5.3 Mac Full Screen
我试图将我的应用程序设置为全屏并在Qt 5.3中返回,但我在Mac上遇到了一些问题。当我使用showFullScreen()
时,它会像预期的那样进入全屏。它使用标准的Mac全屏模式,在单独的桌面/空间中打开。然而,当我调用showNormal()
从全屏模式返回时,应用程序窗口就消失了,我留下了一个灰色的背景。我需要滑动才能返回到应用程序所在的常规桌面。
这是一个bug在Qt或我做错了什么?我用的是OS X 10.9.3
我在Mac OS X上使用Qt 5.2时也有类似的问题(但不是Qt 4.8)。这似乎可以修复它:
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
}
我不确定这个或这个是否与你的问题有关。但是在Mac上调用showFullScreen()
和showNormal()
似乎有bug。
可以用setWindowState()
改变对showFullScreen()
和showNormal()
的调用。
showFullScreen();
可以修改为
setWindowState(windowState() | Qt::WindowFullScreen);
, showNormal();
可以改成
setWindowState(windowState() & ~Qt::WindowFullScreen);
这里有一个简单的示例应用程序,在我的系统(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();
}
相关文章:
- 如何理解"Temporary objs are destroyed as the last step in evaluating the full-expression"?谁能用一些简单的例子来说明这
- 如何修复"(Song Title) is not recognized in output screen"
- 使用谷歌测试编译程序时"g++ is not a full path"
- 将"full"字符串数组传递给函数
- "full-expression"与"full expression"
- 如何在不将其连接到终端的情况下运行'screen',以便我可以在C++ (qt) 应用程序中捕获输出?
- CMAKE CMAKE_C_COMPILER "is not a full path to an existing compiler tool"
- OpenGL to DirectX (Buffer To Texture To Screen)
- 如何在 c++ "not whole screen" 的文本模式下清除特定文本?
- OpenGL "black screen"挫败感
- 使用着色器渲染三角形时"vertex colored" OpenGL "black screen"
- OpenCV 2.4.9 Full Screen
- Blank Screen in OpenGL and Glut
- 跟踪/系统调用"Print Screen"进程
- SDL Small Screen
- OpenGL with GLUT - black screen
- Opencv错误:当我使用screen()时内存不足(无法分配)
- C++&&QT 有没有办法在 Mac && Windows 上使用 C++ 和 qt 创建"warm screen"颜色
- QT 5.3 Mac Full Screen
- Full screen in openGL