QT中控件如何随着窗口大小的改变而使它充满整个窗口空间

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了QT中控件如何随着窗口大小的改变而使它充满整个窗口空间相关的知识,希望对你有一定的参考价值。

1、首先我们在界面中添加一个QLabel控件。

2、在控件上边下边分别添加一个竖直的弹簧,选中这三个控件,点击竖直布局。

3、然后在上次布局的两侧添加水平的弹簧。

4、选中两个弹簧和上次的布局,点击水平布局。

5、最后选中最外层的窗口,点击水平或竖直布局,进行整体布局。

6、布局效果如下图,如图所示控件四周有4个弹簧即代表可以控制控件随着窗口大小的改变而使它充满整个窗口空间。

参考技术A

1、点击右上角的最大化按钮实现无边框窗口最大化,但最大化时不遮挡任务栏。

2、首先,在设计器界面上的最大化按钮上右击鼠标,选择“转到槽...”。

3、再选择clicked()信号,点击OK。

4、在响应最大化按钮的单击事件函数中,先创建一个QDesktopWidget对象,以便获取最大化窗口的大小(不包含任务栏)。

5、布局效果如下图,现在可以运行一下,然后拖动界面改变大小来试一下效果了。

参考技术B 这里我们一般可以对窗口整体进行布局,我们要用到Layout布局部件。
Layout是一种各种UI都很长用的布局手段,Qt的就很不错,比如说GridLayout,你可以把整个窗体布局一个GridLayout,
然后再往GridLayout里面放控件或者其他布局,这种布局的手段可以随窗体变化而改变布局内的控件的大小,而相对的位置不变。
设置qtablewidget为主窗口的中心部件。
代码设置方式:
setCentralWidget(qwidget的名字)
窗口变化时窗口内的部件依然按照原排列方式铺满窗口,则只需设置窗口如下:
直接为QMainWindow设置一个局部方式即可,水平或垂直布局都可以
使用布局时,在复杂的情况下,需要结合很多的手段才可以达到理想的效果,而且一般使用手写代码更为方便。有几个因素供参考:
1.大小提示(size hint)和最小大小提示(minimum size hint)
2.大小策略(size policy)
3.伸缩因子(stretch factor)
4.大小约束(size constraint)
5.空白(margin)和间距(spacing)
还有,对于布局而言,对于一个窗口,要达到你说的那个基本目标,首要的就是要设置顶级布局(Top Level Layout)。比
如用designer时要注意, 要点中外层的widget然后选layout, 而不是选中若干子控件再选layout, 因为后者的layout和外本回答被提问者采纳
参考技术C

鼠标右击“对象查看器”的第一个类(我的是QMainWindow类),然后选择“布局”,选择“栅格布局”(或者“水平布局”)。

.net中如何动态改变Label控件的位置

我在Winform中有一个Label控件 我想要它随着窗体的Resize而动态调整在窗体中的位置 本来我打算在Form的Resize事件中 将Label.Location.X和Label.Location.Y的值 设成宽度和高度的一半 来使它居中 但是编译时报错说Location不能赋值 不是变量 那请问 我应该怎么做来达到我想要的要求呢

调整窗口大小,让控件的位置动态调整,不是靠Resize事件中手动设置控件的位置,
你以前是学vb的吗?vb调整窗口大小,需要手动在Resize事件中手动设置控件的位置,.net有更智能的操作,

选中控件,右键属性,找到【Anchor】属性,这个属性就是设置控件随窗体大小动态调整位置的属性,点开右边的下拉框,可以看到一个方块四周有四个块,默认选中的是上面和左边的块,这表明:调整窗体时,上边距和左边距始终保持不变。同样,可以设置左,右,上,下的块,使控件对应的边距随窗体大小改变而改变,

ps:设置控件的位置,是这样设置的:
Label.Location = new Point(20,20);
参考技术A   vb调整窗口大小,需要手动在Resize事件中手动设置控件的位置,.net有更智能的操作。
  选中控件,右键属性,找到【Anchor】属性,这个属性就是设置控件随窗体大小动态调整位置的属性,点开右边的下拉框,可以看到一个方块四周有四个块,默认选中的是上面和左边的块,这表明:调整窗体时,上边距和左边距始终保持不变。同样,可以设置左,右,上,下的块,使控件对应的边距随窗体大小改变而改变,
  ps:设置控件的位置,是这样设置的:Label.Location = new Point(20,20)。
参考技术B .net 解决不了这个问题,窗口的resize时间是客户端发生的。.net服务端根本无法获得客户端窗口重画的事件。你这个问题的解决只能靠js来解决。

window 对象好像有个onresizeend事件 ,在这里面定位到你的标签 然后用css控制他的位置试试吧

以上是关于QT中控件如何随着窗口大小的改变而使它充满整个窗口空间的主要内容,如果未能解决你的问题,请参考以下文章

QT怎么设置控件在窗口大小发生变化的时候,使控件始终居于右上角

几个ui显示在一个窗口里

MFC如何将窗口中所有控件大小随父窗口大小改变

vb中一个窗口中的控件随窗口的大小改变而相应改变位置

我在QT design中使用部件,怎么样可以使部件随着窗口大小改变而改变?

qt页面布局调整不了控件大小