如何以编程方式将 QMainWindow 大小调整为其最小大小

2024-03-29

当我有一个带有网格布局的 QMainWindow 时,当用鼠标调整它的大小时,它不会低于其中所有控件正确显示所需的最小尺寸。在我的应用程序中,我有时会以编程方式隐藏控件,但随后窗口保持相同的大小,其余控件看起来分散开来,它们之间的空间太大。我最终手动调整了对话框的大小,这样它看起来就不会难看了。

我可以通过编程方式将对话框的垂直尺寸设置为在隐藏控件后手动调整大小时得到的最小值吗?


我发现调整大小centralWidget in the QMainWindow然后调整大小QMainWindow它本身就可以解决问题。换句话说:

from PyQt4 import QtGui
class MyMainWindow(QtGui.QMainWindow):
    def __init__(self):
        # define some widgets and stuff
    def whenWidgetsAreHidden(self):
        # this method should be triggered when you hide your widgets
        self.centralWidget.adjustSize()
        self.adjustSize()

请注意,QMainWindowLayout 中还有其他小部件。根据这张图片来自Qt 文档 http://doc.qt.io/qt-4.8/qmainwindow.html,还有 Dock Widget 和其他可能存在的东西。我只使用centralWidget所以这个解决方案对我有用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何以编程方式将 QMainWindow 大小调整为其最小大小 的相关文章

随机推荐

  • 如果值为 null,则在提交之前使用 js 或 jQuery 更改输入文本值

    如果输入值为 null 如何在提交之前使用 js 或 jQuery 更改输入文本值 感谢帮助 With jQuery http jquery com 您可以使用以下命令将回调绑定到提交事件 submit http api jquery co
  • 为什么我应该始终启用编译器警告?

    我经常听说在编译 C 和 C 程序时我应该 始终启用编译器警告 为什么这是必要的 我怎么做 有时我也听说我应该 将警告视为错误 我是不是该 我怎么做 为什么我应该启用警告 众所周知 C 和 C 编译器不善于报告一些常见的程序员错误默认情况下
  • Capybara 无法识别动态添加的 DOM 元素?

    在使用 Capybara 和 Selenium 时 我似乎在测试使用 jQuery 执行的 javascript 操作时遇到了麻烦 预期的行为是当用户单击链接 添加资源 时动态生成表单 Capybara 将能够单击该链接 但无法识别新的表单
  • Greasemonkey:新更新中“未定义 GM_xmlhttpRequest”

    为什么这个简单的 Greasemonkey 脚本对我不起作用https jsfiddle net pghnsw8z 1 https jsfiddle net pghnsw8z 1 我的意思是 在进行 ajax 调用时 我没有得到成功的响应
  • 无需表单即可在屏幕上绘图

    是否可以在不使用表单应用程序的情况下在屏幕上创建一个大的白色矩形 如果可能的话 它应该覆盖整个屏幕 我知道我必须使用System Drawing并尝试了几个步骤 但没有一个真正在我的屏幕上打印任何内容 方法一 调用Windows API 你
  • ANDROID从url获取内容

    我在使用 Android 时遇到问题 我必须能够从生成内容的 URL 中读取内容 然后将它们放入数组中 分割读取的字符串 我使用了不同的方法 但无法读取该字符串 我能怎么做 这是我现在使用的函数 继续出现字符串 nn va private
  • 具有可比较列表与 TreeSet

    选项 1 创建一个实现 Comparable 的列表 并在每次添加值时使用 collections sort List l 对它进行排序 选项 2 创建一个 TreeSet 它始终保持排序 哪一个会更快 我问这个是因为 List 为我提供了
  • git am 错误:“补丁不适用”

    我正在尝试使用 git 将多个提交从一个项目移动到第二个类似的项目 所以我创建了一个补丁 包含 5 个提交 git format patch 4af51 stdout gt changes patch 然后将补丁移动到第二个项目的文件夹并想
  • 如何在 C# 中使用 SendMessageTimeout 获取窗口标题

    我需要枚举所有打开的窗口并获取它们的标题 但问题是某些窗口属于同一进程但属于不同的线程 该线程被阻塞 等待互斥体 因此 我不能对属于我自己的进程的窗口使用 GetWindowText 因为这将导致 SendMessage 调用 这将阻止我的
  • 向类型类实例添加类约束

    我正在尝试实现康托配对函数 作为 通用 Pair 类型类 如下所示 module Pair Pair CantorPair where Pair interface class Pair p where pi a gt a gt p a k
  • 如何使用 C++ 从 RAM 运行可执行文件?

    如何使用 C 从 RAM 运行可执行文件 可执行文件位于 RAM 中 并且我知道地址 如何从我的程序中调用该程序 这类事情通常来自世界的黑暗角落 结合像metasploit这样的工具 用内存创建进程会很棒 因此一些人尝试重新实现Create
  • 向应用程序小部件发送更新广播

    我有一个带有配置活动的应用程序小部件 我想在单击活动中的 确定 按钮时触发小部件的更新 我写了这段代码 Intent initialUpdateIntent new Intent AppWidgetManager ACTION APPWID
  • 为什么 firefox/chrome 显示的页面与 IE8 不同?

    当我看着 我看到最新版本 with Firefox and Chrome 但是一个旧版本 with IE8 另外 通过屏幕抓取PHP Curl给我一个旧版本 我试过了CTRL 刷新在 IE8 中 但我无法让它向我显示最新版本 无论heade
  • 警告:格式字符串不是字符串文字[重复]

    这个问题在这里已经有答案了 我从以下行收到 格式字符串不是字符串文字 警告 NSString formattedString NSString alloc initWithFormat format arguments valist 我在以
  • 从 Delphi 7 中的 C++ DLL 接收字符串数组

    我正在用 C 创建一个 DLL 它将在 Delphi 7 项目中使用 这个问题与this one https codereview stackexchange com questions 43347 produce an array of
  • 尝试从列表中删除对象时迭代期间的并发修改

    我试图在多个列表中循环 最后比较它们的名称 如果它们不匹配 则将其从列表中删除 但我收到此错误 迭代期间并发修改 虽然我已经复制了原始列表只是为了避免这个错误 但仍然得到它 我尝试的是 globals filteredPollsList p
  • 在 R 中获取生存估计

    我试图获得不同人在特定时间的生存估计 我的代码如下 s Surv outcome 1 outcome 2 survplot survfit s person list 1 plot survplot mark time FALSE summ
  • 什么是serialVersionUID?为什么要使用它?

    当出现以下情况时 Eclipse 会发出警告serialVersionUID不见了 可序列化类 Foo 未声明静态final long 类型的serialVersionUID 字段 What is serialVersionUID为什么它很
  • 如何优化Excel VBA点击url

    VBA 运行时出现运行时错误 70 有时代码运行顺利 但有时则不然 想知道是否有更可靠的代码可以继续 它总是停在If link innerHTML Balance Sheet Then end if Public Sub Get Dim i
  • 如何以编程方式将 QMainWindow 大小调整为其最小大小

    当我有一个带有网格布局的 QMainWindow 时 当用鼠标调整它的大小时 它不会低于其中所有控件正确显示所需的最小尺寸 在我的应用程序中 我有时会以编程方式隐藏控件 但随后窗口保持相同的大小 其余控件看起来分散开来 它们之间的空间太大