2017-05-15 15 views
0

QT GUIプログラミングが初めてです。 私は、showとhideを使って2つのメインウィンドウを連続的に切り替えることをテストしようとしています。2つのメインウィンドウを切り替える

私はmain.cppに

 main(){ 
     QApplication a(argc , argv) 
     Mainwinodw1 *window1 = new Mainwindow1(); 
     Mainwinodw1 *window2 = new Mainwindow2(); 

     for (;;) 

     { 
      window1->show(); 
      delay(); 
      window1->hide(); 

      window2->show(); 
      delay(); 
      window2->hide(); 

     } 

     return a.exec(); 

     } 

テストは、ウィンドウを表示することができます一度だけで簡単なコードを作成しましたが、2回目の反復duirng彼らが表示され、非表示にいけません。

誰かがこれを解決するのに手助けできますか?

+0

MainWindow1クラスです。 window1はポインタです。 window1.showはタイプミスです。それはwindow1-> show()です。 –

+0

主な問題は winodw1です。 –

+0

はい親ウィジェット= NULLです。 –

答えて

0

ハードコーディングされた遅延機能の代わりにQtタイマーを使用してください。

main.cppにファイル:

int main(int argc, char *argv[]) 
{ 
    QApplication a(argc, argv); 
    Mainwindow1 *window1 = new Mainwindow1(); 
    Mainwindow2 *window2 = new Mainwindow2(); 
    WindowSwitcher ws(window1, window2, 2000); 

    window1->show(); 

    return a.exec(); 
} 
WindowSwitcher

ソースコード:

#include "windowswitcher.h" 
#include <QTimer> 

WindowSwitcher::WindowSwitcher(QMainWindow *w1, QMainWindow *w2, int delay) : QObject(), window1(w1), window2(w2) 
{ 
    QTimer *timer = new QTimer(this); 
    connect(timer, SIGNAL(timeout()), this, SLOT(switchWindow())); 
    timer->start(delay); 
} 

void WindowSwitcher::switchWindow() 
{ 
    if (window1->isVisible()) 
    { 
     window1->hide(); 
     window2->show(); 
    } 
    else 
    { 
     window1->show(); 
     window2->hide(); 
    } 
} 

WindowSwitcherヘッダーファイル:

#include <QObject> 
#include <QMainWindow> 

class WindowSwitcher : public QObject 
{ 
    Q_OBJECT 
public: 
    explicit WindowSwitcher(QMainWindow *w1, QMainWindow *w2, int delay); 

private: 
    QMainWindow *window1; 
    QMainWindow *window2; 

public slots: 
    void switchWindow(); 
}; 
+0

ありがとうございます。私は問題がタイマーであることを理解した。 –

+0

私はLinuxプラットフォーム上で腕皮質A9 cpu(800MHz)でQT4.8.7を使用しています。 各フレームの時間:30-40ミリ秒。フレームサイズ:640x480ピクセル。 ウィンドウのレンダリングが画面上で非常に遅いのがわかります。 @ ramzes2 –

関連する問題