2016-12-09 1 views
-1

wxGridSizerをwxStaticTextで塗りつぶすと、sizerのplace要素のプログラム白い四角形を閉じた後に取得されます。私はwindows7の下でWxWidgets 3.1.0を使用します。プログラムが閉じているときのwxGridSizerのplace要素の白い四角形

Result gif

だから私の質問はどのような行動を取り除くと、なぜこれが起こっているか、それは正常ですか?ここで

は私のコードです:

# include "wx/wx.h" 
# include <string> 

class GridSizer : public wxFrame 
    { 
    public: 
     GridSizer(const wxString& title) : wxFrame(NULL, -1, title, wxPoint(-1, -1), wxSize(400, 400)) 
      { 
      std::size_t Size = 11; 
      gs = new wxGridSizer(Size, Size, 3, 3); 

      for(std::size_t i = 0;i<Size;i++) 
       for(std::size_t j = 0;j<Size;j++) 
        { 
        std::string temp; 
        if(!i && !j) 
         temp = ""; 
        else if(!i) 
         temp = std::to_string(j); 
        else if(!j) 
         temp = std::to_string(i); 
        else 
         temp = std::to_string(i*j); 

        gs->Add(new wxStaticText(this, -1, temp), 0, wxEXPAND); 
        } 

       SetSizer(gs); 
      } 
     wxGridSizer *gs; 
    }; 

class MyApp : public wxApp 
    { 
    public: 
     virtual bool OnInit() wxOVERRIDE 
      { 
      GridSizer *gs = new GridSizer(wxT("GridSizer")); 
      gs->Show(true); 
      return true; 
      }; 
    }; 

wxIMPLEMENT_APP(MyApp); 
+0

Windowsで通常動作します。あなたの問題を正確に言えますか?あなたのOSとwxバージョンも教えてください。 – Ripi2

+0

@ Ripi2、ありがとう、更新されました。私の問題の本質は、プログラムの終了時にウィジェットの場所に存在する白い背景です。私はその理由 - デストラクタの動作が遅いのは、wxStaticTextをwxBitmapに置き換えてから "四角"がほとんど見えなくなるからだと思う。しかし、ここで重い要素がないので、異常な行動です。 – CamFerry

答えて

2

あなたが何らかの形でフレームの破壊時のちらつきを見ているように見えます(私はそれを見ていないと私は、Windowsのバージョンがわからないので、私はこれを言いますwxWidgetsを使用します)。それを破壊する前にフレームを隠すことは、それを助けるべきです。

しかし、最初はこのようなものに対して100個の独立したコントロールを作成することは悪い考えです。コントロールは限られたリソースであり、控えめに使用する必要があります。 10 * 10グリッドを表示する必要がある場合は、代わりにwxGridを使用してください。

関連する問題