堆栈2 QTableWidgets

时间:2012-07-12 09:42:26

标签: qt widget tabwidget

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

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

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

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

如果有人有想法,尽可能小,我会非常感激。

大家度过美好的一天!

编辑:上面,我并不是说...我知道这有点难以解释。如果我们认为我们看屏幕的轴是Z,我希望两个表都是: - 相当于X轴(相同的列数) - 相当于Y轴(相同的行数) - Z轴上的不同(一个表是“更深”)

1 个答案:

答案 0 :(得分:0)

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


您可以使用QVBoxLayout将小部件置于另一个之下。只需选择两个表格小部件,然后选择“布局”>在上下文菜单中“垂直布局”。然后,您应该使用row stretches告诉布局窗口小部件应具有相同的大小。据我所知,延伸只能使用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);