0

我的程序执行计算并输出一些示意图,绘制在标签上(使用QPixmap)。我在每个标签上显示一个标签。

当下一次计算完成并且图纸更小时,我希望标签的大小也减小。但这不会发生。标签大小保持不变。

我首先使用 ) 删除所有以前的选项卡removeTab(,然后创建新选项卡。唯一没有被删除QTabWidget的当然是它本身。

从小图纸开始时,标签尺寸会随着图纸的增大而增加。但反过来就行不通了。

我怎样才能解决这个问题?以下代码不起作用:

layout_tabs = new QTabWidget;
layout_tabs->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum);

我正在使用 QT-4.8.4。

4

1 回答 1

-1

您(用户)可以在切换到较小的标签后使用鼠标手动调整窗口大小吗?

如果是这样,可能发生的是父窗口小部件(即窗口)已调整大小以适应较大的子 QTabWidget。当小标签出现在大标签之后时,QTabWidget 仍将占用与其父级相同的空间,除非优先考虑其布局层次结构中同一级别的另一个小部件。因为父窗口没有变小,QTabWidget 也不会变小。

因此,请在删除选项卡后尝试调整父小部件(QMainWindow 或其他)的大小,并且应该跟随选项卡小部件。在 Qt 中,收缩通常必须来自上方,而扩展可以来自上方或下方。像这样的东西可能会起作用(未经测试)......

while(layout_tabs->count() > 0)
{
    QWidget* removedtab = layout_tabs->widget(0);
    layout_tabs->removeTab(0); //removeTab() doesn't delete the widget
    removedtab->deleteLater(); //so you have to delete it yourself
}
layout_tabs->updateGeometry();
mainwindow->resize(mainwindow->minimumSize());

编辑请注意,QLayoutTab::removeTab()不会删除您删除的选项卡,因此您需要以某种方式自己删除它,例如在我刚刚添加的代码片段中,因为删除的选项卡不再具有父级。

于 2013-02-05T21:10:40.760 回答