Stack 2 QTableWidgets



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

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

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

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

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

祝大家今天愉快!

编辑:我说的"以上"并不是说"靠边站"。。。我知道这有点难以解释。如果我们认为屏幕上的轴是Z,我希望两个表都是:-X轴上的等效(列数相同)-在Y轴上等效(行数相同)-在Z轴上不同(一个表"更深")

注意:这个答案离题了,因为我误解了这个问题。问题是堆叠小部件,但绘制所有小部件。然而,如果未来的读者想把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);

相关内容

  • 没有找到相关文章

最新更新