0

私は現在、作成したゲームのマップ エディターを実行していますが、Qt に小さな問題があります。初めて利用しましたが、挑戦するのが大好きで、素晴らしい経験になると思いました.

現在、Qt Designer を使用してインターフェイスを構築していますが、マップ部分で立ち往生しています。実際、私のマップは 2 つのレイヤーで構成されています: 地形、およびユニット/障害物/植生です。

QTableWidget を使用して地形情報を格納していますが、そのに別の QTableWidget をまったく同じサイズでスタックして、ユニットなどを配置できるようにしたいと考えています。しかし、これを達成する方法が見つかりませんでした。 Qtデザイナーで。新しい QTableWidget を作成するとすぐに、その上ではなく、最初の横になります。

QStackedWidget を使おうと思ったのですが、一度に 1 つのウィジェットしか表示できないので、希望に沿うものではありません。

誰かがアイデアを持っていれば、それがどんなに小さなものであっても、私はとても感謝しています.

みなさん、良い一日を !

編集:上記で、私は脇に意味しません...説明するのはちょっと難しいことを知っています。画面を見る軸が Z であると考える場合、両方のテーブルを次のようにしたいと思います。 - X 軸で同等 (列数が同じ) - Y 軸で同等 (行数が同じ) - 異なるZ 軸 (1 つのテーブルが「深い」)

4

1 に答える 1

0

注:質問を誤解したため、この回答はトピックから外れています。問題は、ウィジェットをスタックすることですが、それらすべてをペイントすることです。ただし、将来の読者がウィジェットを上下に配置したい場合は、そのままにしておきます。(詳細は質問のコメントを参照してください。)


を使用して、ウィジェットを上下に配置できますQVBoxLayout。2 つのテーブル ウィジェットを選択し、コンテキスト メニューで [レイアウト] > [垂直にレイアウト] を選択するだけです。次に、行ストレッチを使用して、ウィジェットが同じサイズであることをレイアウトに伝える必要があります。私の知る限り、ストレッチは .ui デザイナー ファイル内からではなく、C++ コードを使用してのみ設定できます。これは、ウィジェット クラスのコンストラクターの の直後に次の 2 行を追加することで実行できますui->setup(this);

ui->verticalLayout->setStretch(0, 50); //  50%, but the number doesn't have to be
ui->verticalLayout->setStretch(1, 50); //  in percent, so 1 / 1 is the same.

私の理解が正しければ、大きなウィジェット、マップ エディターのメイン ウィジェット、およびその下または横にある他の 2 つのウィジェットが必要です。それらが下にある場合は、これを 1 つにまとめてQVBoxLayoutストレッチを設定できます。たとえば、3:1:1 に設定すると、メイン ウィジェットが使用可能な高さの 60% を占め、2 つのテーブル ウィジェットがそれぞれ 20% を占めます。

ui->verticalLayout->setStretch(0, 3);
ui->verticalLayout->setStretch(1, 1);
ui->verticalLayout->setStretch(2, 1);
于 2012-07-12T09:52:01.683 に答える