2014-06-17 9 views
8

मैं अपना आवेदन पूर्ण स्क्रीन पर और क्यूटी 5.3 में वापस सेट करने की कोशिश कर रहा हूं, लेकिन मैक पर कुछ मुद्दों पर चल रहा हूं। जब मैं showFullScreen() का उपयोग करता हूं, तो यह अपेक्षित के रूप में पूर्ण स्क्रीन में जाता है। यह मानक मैक पूर्ण स्क्रीन मोड का उपयोग करता है जहां यह एक अलग डेस्कटॉप/स्पेस में खुलता है। हालांकि, जब मैं पूर्ण स्क्रीन मोड से वापस आने के लिए showNormal() पर कॉल करता हूं, तो एप्लिकेशन विंडो बस गायब हो जाती है और मुझे भूरे रंग की पृष्ठभूमि के साथ छोड़ दिया जाता है। मुझे नियमित डेस्कटॉप पर वापस जाने के लिए स्वाइप करने की आवश्यकता है जहां एप्लिकेशन है।क्यूटी 5.3 मैक पूर्ण स्क्रीन

क्या यह क्यूटी में एक बग है या क्या मैं कुछ गलत कर रहा हूं? मैं ओएस एक्स 10.9.3 पर हूं।

उत्तर

0

मुझे यकीन नहीं है कि this या this आपकी समस्या से संबंधित है। लेकिन ऐसा लगता है कि showFullScreen() और showNormal() पर कॉल मैक पर छोटी है।

आप और showNormal() पर setWindowState() के साथ कॉल बदल सकते हैं।

showFullScreen();

setWindowState(windowState() | Qt::WindowFullScreen); 

को बदला जा सकता है और showNormal();

setWindowState(windowState() & ~Qt::WindowFullScreen); 
+1

प्रतिक्रिया के लिए धन्यवाद! मैंने इसे आज़माया, लेकिन दुर्भाग्य से मैं वही व्यवहार देख रहा हूं। –

0

यहाँ एक तुच्छ उदाहरण अनुप्रयोग है कि अपने सिस्टम पर ठीक से काम करता (क्यूटी 5.3.1 है बदला जा सकता है, MacOS/एक्स 10.9 .5)। क्या यह आपके लिए भी सही तरीके से काम करता है? यदि ऐसा है, तो इस कार्यक्रम और आपके कार्यक्रम के बीच क्या अलग है, इसे आज़माएं और जानें।

आप showNormal() को कॉल करने के बाद शो(), raise(), और सक्रिय Window() को कॉल करने का प्रयास भी कर सकते हैं और देख सकते हैं कि उन चीजों की सहायता क्या है।

// 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(); 
} 
1

मैं मैक ओएस एक्स (लेकिन क्यूटी नहीं 4.8) पर क्यूटी 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 
} 
संबंधित मुद्दे