繁体   English   中英

wxSizer和wxStaticBitmap忽略最小大小

[英]wxSizer and wxStaticBitmap ignore minimum size

Wizard::Wizard( wxWindow* parent, const wxString& archive )
: wxWizard(parent, wxID_ANY, _("Wizard"))
{    
    this->SetSizeHints( wxSize( -1,-1 ), wxDefaultSize );

    wxWizardPageSimple* rcModWizPageSelect = new wxWizardPageSimple( this );
    m_pages.Add( rcModWizPageSelect );

    wxBoxSizer* bSizer1;
    bSizer1 = new wxBoxSizer( wxVERTICAL );

    m_bitmap2 = new wxStaticBitmap( rcModWizPageSelect, wxID_ANY, wxBitmap( wxT("data/img.jpg"), wxBITMAP_TYPE_ANY ), wxDefaultPosition, wxDefaultSize, 0 );
    m_bitmap2->SetMinSize( wxSize( 586,192 ) );

    bSizer1->Add( m_bitmap2, 0, wxALL|wxEXPAND|wxFIXED_MINSIZE, 5 );

    wxStaticBoxSizer* sbSizer1;
    sbSizer1 = new wxStaticBoxSizer( new wxStaticBox( rcModWizPageSelect, wxID_ANY, _("Select Archive") ), wxVERTICAL );

    rcModArchivePicker = new wxFilePickerCtrl( rcModWizPageSelect, wxID_ANY, wxEmptyString, _("Select a file"), wxT("*.zip"), wxDefaultPosition, wxDefaultSize, wxFLP_DEFAULT_STYLE|wxFLP_FILE_MUST_EXIST|wxFLP_OPEN );
    sbSizer1->Add( rcModArchivePicker, 0, wxALL|wxEXPAND, 5 );

    bSizer1->Add( sbSizer1, 1, wxALL|wxEXPAND, 5 );

    rcModWizPageSelect->SetSizer( bSizer1 );
    rcModWizPageSelect->Layout();
    bSizer1->Fit( rcModWizPageSelect );
    wxWizardPageSimple* rcModWizPageProgress = new wxWizardPageSimple( this );
    m_pages.Add( rcModWizPageProgress );

    wxBoxSizer* bSizer2;
    bSizer2 = new wxBoxSizer( wxVERTICAL );

    m_bitmap1 = new wxStaticBitmap( rcModWizPageProgress, wxID_ANY, wxBitmap( wxT("data/img.jpg"), wxBITMAP_TYPE_ANY ), wxDefaultPosition, wxDefaultSize, 0 );
    m_bitmap1->SetMinSize( wxSize( 586,192 ) );

    bSizer2->Add( m_bitmap1, 0, wxALL|wxEXPAND|wxFIXED_MINSIZE, 5 );

    wxStaticBoxSizer* sbSizer2;
    sbSizer2 = new wxStaticBoxSizer( new wxStaticBox( rcModWizPageProgress, wxID_ANY, _("Please Wait") ), wxVERTICAL );

    rcModInstallProgress = new wxGauge( rcModWizPageProgress, wxID_ANY, 100, wxDefaultPosition, wxDefaultSize, wxGA_HORIZONTAL|wxGA_SMOOTH );
    rcModInstallProgress->SetValue( 0 ); 
    sbSizer2->Add( rcModInstallProgress, 0, wxALL|wxEXPAND, 5 );

    bSizer2->Add( sbSizer2, 1, wxALL|wxEXPAND, 5 );

    rcModWizPageProgress->SetSizer( bSizer2 );
    rcModWizPageProgress->Layout();
    bSizer2->Fit( rcModWizPageProgress );

    this->Centre( wxBOTH );

    for ( unsigned int i = 1; i < m_pages.GetCount(); i++ )
    {
        m_pages.Item( i )->SetPrev( m_pages.Item( i - 1 ) );
        m_pages.Item( i - 1 )->SetNext( m_pages.Item( i ) );
    }
}

我尝试使用一个不错的向导对话框,但是最小尺寸被忽略,并且整个框架比我的图像小得多。 图片大小为586x192。

预览在wxFormBuilder中看起来不错,但是生成的代码看起来完全不同。 这里有2张图片: http : //i.stack.imgur.com/tbOzP.png http://i.stack.imgur.com/B3vVf.png

谁能帮我这个?

我遇到了同样的问题,可以通过在sizer上调用SetItemMinSize()来解决此问题,如下所示:

sizer->Add(control, 0, 0, 0);
sizer->SetItemMinSize(control, 150, -1);

您可能还想检查您的实际父窗口小部件是否遵循其子级的大小或是否能够识别它们。 我认为您的窗口小部件本身(图片)具有正确的大小,但其周围的窗口/框架没有正确的大小,因此显示为“超出范围”。 尝试使Window应用其子项的大小更改,请在此处参考: http : //docs.wxwidgets.org/trunk/overview_windowsizing.html

和:

http://docs.wxwidgets.org/trunk/classwx_window.html#a2bf38a6cbd1f82fb46f274396f482994 http://docs.wxwidgets.org/trunk/classwx_sizer.html#abad9cedc0cbe9ade2c799da23462d17e

希望能打招呼,

罗恩

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM