Qt4 Designer使用QTableWidget创建对话框

时间:2012-05-22 11:33:17

标签: c++ qt qt-designer

我希望Qt v4.7.1在Qt Designer中使用QTableWidget是一个简单的问题。我想创建一个QTableWidget设置为3x3网格的对话框,然后设置表的初始大小以准确显示3x3网格,没有滚动条。我不希望桌子比这更大或更小。然后,我想将对话框的初始大小(可以是固定大小)设置为此表所需的确切大小。

我在Qt Designer中完成了这些步骤:

  1. 创建一个新对话框(对于此示例,我们将使用没有按钮的对话框)。
  2. 在QTableWidget中拖动。
  3. 双击表并设置3行(称为1,2和3)和3列(同样),然后单击“确定”。
    • 当我最初拖动它时,该表的大小与空表的大小相同。这对于三列来说不够宽,所以我有一个水平滚动条,并且对于三行来说太高了所以我有很多底部的空白空间。
  4. 右键单击对话框并选择“在网格中布局”(或水平/垂直)
    • 现在表格调整大小以填充大于所需的对话框,因此我可以看到所有行/列,但右侧和右侧有很多空白区域。底部。
  5. 右键单击对话框并说出“调整大小”。
    • 表格现在跳回到初始大小,即。用水平滚动条不够宽,而且太高。调整对话框大小以适合此表。
  6. 调整大小以适合表格的对话框是正确的。但是我怎样才能调整表格的大小以适应它的内容?

    我尝试了很多其他的事情,例如。将表格上的大小政策更改为“固定,固定”或“最小,最小”,但仍希望将初始大小设置为与内容不匹配的大小。理想情况下,我希望表/对话框只设置正确的初始大小,并允许用户使对话框更小(这将添加滚动条)但如果我必须修改大小,它不是世界末日。

    是否可以在Qt Designer中执行此操作,还是应该在代码中设置大小?

    非常感谢您的回复。

2 个答案:

答案 0 :(得分:2)

请注意,除非QTableWidget不强制任何大小,否则您的QDialog也不会。所以你需要的是修复QTableWidget的大小; QDialog与此无关。当QTableWidget想强制另一个大小时,布局将尝试调整QDialog的大小。

但据我所知,将QTableWidget的大小设置为特定的行数/列数是不可能的,至少不是在QtDesigner中。

您需要编写一些代码才能实现此目的。代码需要请求列的宽度和行的高度(包括标题),并添加窗口小部件的边框。然后使用ui->tableWidget->setFixedSize(...)设置此大小。如果为用户启用此选项,则还需要对列/行的大小调整做出反应。


对于固定单元格大小和不可见标题,有一种可能的解决方案,没有手动代码(完全在QtDesigner中):

  • 设置(水平|垂直)HeaderVisible = false
  • 设置(水平|垂直)HeaderDefaultSectionSize =(fixedValue)
  • 设置(水平|垂直)HeaderMinimumSectionSize =(fixedValue)
  • 将QTableWidget的大小设置为大小的总和。请记住将(列数+ 1)和(行数+ 1)像素添加到QTableWidget的固定总大小。

答案 1 :(得分:1)

对于固定单元格大小,您可以直接从QtDesigner使用setFixedSize和QSizePolicy :: Fixed。

如果要为其内容长度调整列/行的大小,请在代码中使用resizeColumn(s)[Row(s)] ToContents。

如果你想将调整大小附加到QDialog调整大小 - 在代码中的Dialog的resizeEvent中编写代码。

Dinamically resizing table cell只能来自QtDesigner

的代码