0

我目前正在为我创建的游戏做地图编辑器,我对 Qt 有一个小问题。这是我第一次使用它,但我喜欢挑战,我认为这将是一次很棒的体验。

我目前正在使用 Qt Designer 构建我的界面,但我被困在地图部分。事实上,我的地图由 2 层组成:地形和单位/障碍物/植被。

我正在使用 QTableWidget 来包含地形信息,但现在我想在它上面堆叠另一个 QTableWidget ,大小完全相同,所以我可以放置我的单位等。但是,我没有找到如何实现这一点在 Qt 设计器上。一旦我创建了一个新的 QTableWidget,它就会在第一个的一侧,而不是在它之上。

我考虑过使用 QStackedWidget,但由于它一次只允许 1 个 Widget 可见,所以它不符合我的希望。

如果有人有一个想法,尽管它可能很小,我将非常感激。

祝大家拥有美好的一天 !

编辑:以上,我不是指一边……我知道这有点难以解释。如果我们认为我们查看屏幕的轴是 Z,我希望这两个表都是: - 在 X 轴上等效(相同的列数) - 在 Y 轴上等效(相同的行数) - 在不同的Z 轴(一张桌子“更深”)

4

1 回答 1

0

注意:这个答案是题外话,因为我误解了这个问题。问题是关于堆叠小部件但绘制所有小部件。但是,如果未来的读者想要将 widges 放在另一个下方,我将它留在那里。(有关详细信息,请参阅问题的评论。)


您可以使用QVBoxLayout. 只需选择两个表格小部件,然后在上下文菜单中选择“布局”>“垂直布局”。然后,您应该使用行延伸来告诉布局小部件应该具有相同的大小。据我所知,只能使用 C++ 代码设置拉伸,而不是从您的 .ui 设计器文件中设置。这可以通过将这两行放在小部件类的构造函数中来完成,就在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.

如果我理解正确,您想要一个大的小部件,您的地图编辑器的主小部件,以及下方或侧面的另外两个小部件。如果它们在下面,您可以将它们合二为一QVBoxLayout并设置拉伸,例如,设置为 3:1:1,这使得主小部件占据可用高度的 60%,而您的两个表格小部件各占 20%:

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