2012-09-09 23 views
5

QWidget、通常は一部のレイアウトの子を考えてみましょう。Qtウィジェット一時的にフルスクリーン

私はそれをしばらくの間フルスクリーンにしたいと思っています。そしてそれを古い場所に戻してください。

QWidget::setFullScreen()は、ウィジェットが独立したウィンドウである必要があります - どのようにそれを動作させるためのアイデアですか?私は前の例を変更した

#include <QApplication> 
#include <QPushButton> 

class MyButton : public QPushButton 
{ 
public: 
    MyButton(QWidget* parent) : QPushButton(parent) {} 

    void mousePressEvent(QMouseEvent*) { 
     this->setParent(0); 
     this->showMaximized(); 
     this->show(); 
    } 
}; 

int main(int argc, char *argv[]) 
{ 
    QApplication a(argc, argv); 

    QWidget mainWidget; 
    MyButton button(&mainWidget); 
    mainWidget.show(); 

    return a.exec(); 
} 

答えて

3

最も簡単な方法は、このような0何かにリペアレントすることです。前の例は決して通常の画面に戻りません。

コードをコピーして貼り付けるだけで実行されます。

 #include <QApplication> 
     #include <QPushButton> 

     class MyButton : public QPushButton 
     { 
     public: 
      MyButton(QWidget* parent) : QPushButton(parent) { 
       m_pParent = parent; 
       maxMode = false; 
      } 
      QWidget * m_pParent; 
      bool maxMode; 
      Qt::WindowFlags m_enOrigWindowFlags; 
      QSize m_pSize; 

      void mousePressEvent(QMouseEvent*) { 
       if (maxMode== false) 
       { 
        m_enOrigWindowFlags = this->windowFlags(); 
        m_pSize = this->size(); 
        this->setParent(0); 
        this->setWindowFlags(Qt::FramelessWindowHint|Qt::WindowStaysOnTopHint); 
        this->showMaximized(); 
        maxMode = true; 
       } 
       else 
       { 
        this->setParent(m_pParent); 
        this ->resize(m_pSize); 
        this->overrideWindowFlags(m_enOrigWindowFlags); 
        this->show(); 
        maxMode = false; 
       } 
      } 
     }; 

     int main(int argc, char *argv[]) 
     { 
      QApplication a(argc, argv); 

      QWidget mainWidget; 
      MyButton button(&mainWidget); 
      mainWidget.show(); 

      return a.exec(); 
     } 
+1

偉大な答え!さらに、ウィジェットはmainWindowなどのレイアウトの一部です。レイアウトメソッド「index = indexOf(this)」を使用し、フルスクリーンモードをエスケープするときは、ウィジェットをmainWindowに呼び出すことで再度追加することができます包含レイアウトメソッド: "insertWidget(this、index)"。 – Gombat

1

:私は見ることができます

関連する問題