我的程序执行计算并输出一些原理图,绘制到标签上(使用QPixmap
)。我在每个标签上都显示了一个标签。
当完成下一次计算并且图纸较小时,我希望标签的大小也减小。但这不会发生。标签尺寸保持不变。
我首先使用removeTab(
删除所有以前的标签页,然后创建新标签页。唯一没有删除的是当然QTabWidget
本身。
从小图纸开始时,标签尺寸随着图纸的增大而增加。但它反过来不起作用。
我该如何解决这个问题?以下代码不起作用:
layout_tabs = new QTabWidget;
layout_tabs->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum);
我使用的是QT-4.8.4。
答案 0 :(得分:0)
切换到较小的标签后,您(用户)可以使用鼠标手动调整窗口大小吗?
如果是这样,可能发生的是父窗口小部件(即窗口)已调整大小以容纳较大的子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()不会删除您删除的标签,因此您需要以某种方式自行删除它,例如在我刚添加的代码段中,因为已删除标签不再有父母。