나는 고정 된 크기를 사용하는 오래된 GUI에서 wxWidgets (여기서 나는 sizer의 기초를 배우려고 노력하고있다)의 어플리케이션을 움직이고있다.sizer는 양식을 처리하는 좋은 방법입니까?
응용 프로그램 내에서 나는 꽤 복잡한 구조로 여러 형태가 있습니다. 데이터 및 워크 플로의 성격 때문에 이러한 모든 데이터를 한 화면에 모으는 것이 좋습니다. 그러나이 화면은 사용할 수 있도록 적절하게 설계되어야합니다. 여기
다음 양식의 이전 버전은 ...
... 그리고 더 많거나 적은 내가 사용 선별기 가지고 올 수 있는지의 ...위젯 중 일부는 행 전체에 걸쳐 있고 다른 일부는 고정 그리드 등에서 나오기 때문에 wxGridSizer를 사용할 수 없습니다.
분명히 나는 추악하지 않게하기 위해 계속해서 작업 할 수 있었지만, sizer가 올바른 도구가 아닌 것 같았다. 내가 원하는 것을 얻기 위해서는 어떤 종류의 colspan/rowspan 메카니즘을 가진 wxGridSizer와 비슷한 것이 필요할 것이고 아마도 충분하지 않을 것입니다.
그래서 나는 완전히 형태의 형상을 차단하기 위해, 모든 위젯의 상대적 크기를 설정합니다int w,h;
GetClientSize(&w,&h);
MyFormSizer *formSizer(w,h);
formSizer->SetDimension(widget1, 100, 20);
formSizer->SetDimension(widget2, 500, 20);
formSizer->newRow();
formSizer->SetDimension(widget3, 100, 20);
formSizer->SetDimension(widget4, 250, 20);
formSizer->SetDimension(widget5, 250, 20);
formSizer->Layout();
사용자처럼 뭔가를 갈 수있는 자신에 의해 "양식 크기 조절기"를 구축 할 생각하기 시작했다. 이 구조는 적절한 배율 f
을 계산합니다 Layout()
크기를 조정할 때 wxPanel에 맞게 다음 등
widget1->SetSize(CalculatedX, CalculatedY, 100/f, 20/f);
CalculatedX+=100/f;
widget2->SetSize(CalculatedX, CalculatedY, 500/f, 20/f);
CalculatedX+=0;
CalculatedY+=20/f;
과 같은 일을하고 모든 크기와 위치를 설정합니다 (이 그냥 처음이다, 거친로서을 만들려면 위젯의 텍스트를 맞추기에 너무 작은 모든 것을 만들거나 글꼴 크기를 그에 맞게 조정하는 메커니즘이 있어야합니다.
합리적인 것처럼 보입니까? 주제에 대해 어떻게 생각하십니까? 이 선택은 내 미래의 개발에 영향을 미칠 것입니다. 따라서 어떤 대답, 비판 및 의견도 매우 환영받을 것입니다.
슈퍼! 나는 나의 브라우징과 독서에서 이것을 결코 발견하지 못했다는 것이 부끄럽다. 정말 내 해결책 인 것 같다. 나에게 약간의 시험을주고 나는이 대답을 받아 들일 것이다. – dirluca
당신이 제안한 것을 구현하는 데 어려움을 겪고 있습니다. 그러나 제트기가 도구를 사용하고 있거나 자신감이 부족한 경우 제트라고 말할 수는 없습니다. 즉, 열 너비를 관리하는 데 큰 어려움이 있습니다. 내용이 다르더라도 모두 같아지는 경향이 있으며 "비례"매개 변수가 없습니다. 'wxSizer :: SetItemMinSize()'는 일부 작업을하지만, 예를 들어 나는 모든 행에서 colspanned하지만 20X20 버튼이있는 열을 가지고 있습니다. 너비가 20px가 될 것으로 예상되지만 대신 다른 열과 동일합니다. 나는 시험을 계속한다! – dirluca
몇 가지 테스트를 더 마친 후에 대답을 수락하기로 결정했습니다. 'wxGridBagSizer'는 완벽하지는 않지만 내 요구에 가장 잘 맞는 것 같습니다. – dirluca