代码之家  ›  专栏  ›  技术社区  ›  San Jacinto

Qt-QHBox布局单元尺寸

  •  2
  • San Jacinto  · 技术社区  · 15 年前

    对于那些没有阅读过我的Qt任务的人,我正在为一个项目学习Qt。我在GUI设计方面的经验非常有限,而不是在Qt方面。

    我有一个水平布局,我想用一些按钮填充它。我可以很好地输入这些按钮,但我以前的方形按钮是水平拉伸的,以占用更多的空间。

    我想让布局管理器确定调整这些按钮大小的最佳方法,但我也希望它们的原始比例保持不变。例如,如果我从32x32按钮开始,这些按钮需要收缩以适应布局中的所有按钮,我希望它们按比例收缩,以便保持宽高比例。20x20、16x16、12x12都很好,但24x16就是不可接受尺寸的一个例子。

    我已经修改了按钮和拉伸选项的大小策略。我看不到,即使是在阅读了qpushbutton和qhboxlayout类之后。它是如何完成的?

    谢谢。

    2 回复  |  直到 15 年前
        1
  •  2
  •   LukáÅ¡ Lalinský    15 年前

    只要我正确理解这个问题,我想你想要的就是 QBoxLayout::addStretch() . 这将添加一个填充未使用空间的间隔对象。所以按钮将有他们的理想尺寸和间隔将填补其余。您可以尝试在Designer中对此进行试验,这比写入/编译/运行循环更容易。

        2
  •  2
  •   Community Neeleshkumar S    7 年前

    你应该看看答案 this question . 这是对我答案的概括。

    您需要创建QlayoutItem的自定义派生,它将覆盖 bool hasHeightForWidth() int heightForWidth( int width ) 以保持纵横比。您可以将按钮传入并查询它,也可以直接设置比率。您还需要确保widget()函数返回指向正确按钮的指针。

    完成后,您可以以与小部件相同的方式将布局项添加到布局中。因此,添加按钮后,将其更改为使用自定义布局项类。

    我还没有测试过这些,所以这是一个理论上的解决方案。如果需要的话,我不知道如何通过设计师来实现这个解决方案。