【问题标题】:Qt Layout for resizing用于调整大小的 Qt 布局
【发布时间】:2011-07-12 08:20:47
【问题描述】:

我是 Qt 开发的新手,正在为我正在开发的游戏编写关卡编辑器,但我在 Designer 中遇到了布局问题。

这是我想要的样子:

(我没有足够的代表来发布图片,这是一个链接:) http://img855.imageshack.us/img855/6474/editori.jpg

右边显然会有更多的按钮和东西,而且东西实际上会显示在 OpenGL 画布中。

所以我有两个具体问题:

1) 我如何设置它,以便在用户重新调整窗口大小时,应用程序会适当地重新调整其内容的大小?我可以通过将按钮放入垂直布局,然后将其和 OpenGLCanvas 放入 Splitter 布局来接近我想要的,但这会导致画布的大小宽度与按钮一样,而不是按钮被固定到比如屏幕最右边的 100 个像素。

2) 有没有一种简单的方法可以滚动画布?关卡的大小可能比屏幕上的大小要大得多,所以如果是这种情况,我想在画布上添加水平和垂直滚动条。 (如果级别太大或者如果用户将窗口设置得足够小以至于它不再适合。在后一种情况下,滚动条应该只在它实际上不适合时出现)。有没有简单的方法可以做到这一点,还是我必须手动完成所有操作?

谢谢!

【问题讨论】:

    标签: qt layout


    【解决方案1】:
    【解决方案2】:

    如果内容没有正确调整大小,听起来好像您可能没有设置顶级布局。另外,您确定要使用拆分器布局吗?我不确定在这种情况下会给您带来什么好处,并且可以通过调整它们上方的画布大小来隐藏按钮。也许你有理由更喜欢这个。无论如何,在 Designer 中,我可以通过以下方式创建类似于您所展示的正确调整大小的内容:

    • 添加按钮,然后将它们分组为垂直布局。
    • 添加画布。
    • 然后选择表单(通过右键单击其他小部件未占用的表单上的某处或右键单击对象检查器中的表单)并从上下文菜单中选择布局->水平布局。

    稍微修改一下,你应该可以滚动画布了:

    • 向表单添加一个 QScrollArea 小部件。
    • 将画布移动到 QScrollArea 小部件。
    • 与之前的表单一样,右键单击表单上的滚动区域小部件或对象检查器,然后通过选择布局->某些布局选项来应用布局。我为此使用了垂直布局。

    【讨论】:

    • 设置顶级布局是什么意思?你是怎么设置的?
    • 基本上,您的表单或小部件是一个 GUI 元素树。顶级元素是树的根,即表单或小部件。如果没有对那个元素应用布局,Qt 不知道它在调整大小时应该如何操作。要设置顶级元素,您应该首先在没有其他布局的地方右键单击它,或者在 Object Inspector 中右键单击它。然后从上下文菜单中选择 Layout->WhateverLayoutYouWant。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-31
    相关资源
    最近更新 更多