1

私は wxListbook をセットアップしており、ページ タイトルが表示される左側のリストに静的な幅を設定したいと考えています。現在、ページが追加されていない場合、幅はなく、ページが追加された場合、幅は最長のタイトル間隔になります。

空の:ここに画像の説明を入力

追加されたページ:ここに画像の説明を入力

私はいくつかのことを試しましたが、うまくいきませんでした。

最初に、列幅を設定しようとしましたが、違いは見られませんでした:

listBook = new wxListbook( this, ID_LISTBOOK, wxDefaultPosition, wxDefaultSize, wxLB_LEFT );

wxListView* listBookListView1 = listBook->GetListView();
listBookListView1->SetColumnWidth(0,400); //tried 0,1,-1 for the first parameter

次に、SetMinSize を試しましたが、やはり違いはありません。

listBook = new wxListbook( this, ID_LISTBOOK, wxDefaultPosition, wxDefaultSize, wxLB_LEFT );
    listBook->SetMinSize(wxSize(400,500));

私も SetSize を試しましたが、違いはありません:

listBook = new wxListbook( this, ID_LISTBOOK, wxDefaultPosition, wxDefaultSize, wxLB_LEFT );
listBook->SetSize(wxSize(200,200));

これを行う正しい方法は何ですか?助けていただければ幸いです。

4

2 に答える 2

1

wxTreebook で同様の問題が発生し、このためのパッチを用意しましたが、カスタム ブック コントロールの機能が壊れる可能性があるため、拒否されました。デフォルトでは、すべてのカスタム ブック コントロールは、内部のセレクター コントロール (wxListView、wxTreeCtrl など) のレイアウトに関連して奇妙な動作をします。必要に応じて、wxTreebook のコードを見つけて送信することができます。多分あなたはそこに何か役に立つものを見つけるでしょう。

それを修正しようとする可能性のある解決策:

  • いくつかのスペースを含む偽のアイテムをリストブックに追加し、フレームを表示してから、そのアイテムを削除します(すばやく汚いですが、うまくいくと確信しており、リストビューの幅はゼロではありません)
  • 自分で wxListbook のソース コードにパッチを適用します (wxWidgets はオープン ソースであり、ソース コードを簡単に変更し、パッチを作成して、wxWidgets の新しいバージョンにアップグレードした後に再利用できます)。
  • フレームを表示して Layout() を呼び出した後、内部の wxListView の MinSize を変更してみてください。
于 2012-11-29T21:48:04.640 に答える
0

現在wxListbook、常にリストをその内容に合わせます。wxListbook個人的には、なぜこれが問題になるのか、特に、なぜページなしでを使いたいのか、何に役立つのか、本当に疑問に思っています。しかし、原則として、リスト コントロールの最小サイズを設定することは機能するはずであり、wxWidgets をこのように変更できる場合は、喜んでパッチを適用します。

ただし、現時点ではこれを行う方法はありません。申し訳ありません。

于 2012-11-30T00:28:10.240 に答える