4

QT上位机开发(动态添加控件)

 4 months ago
source link: https://blog.csdn.net/feixiaoxing/article/details/135493820
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

        开发界面的时候,大多数情况下,我们都是推荐优先使用designer来进行界面开发。但凡事总有例外,如果控件本身数量未定的时候,比如绘制某一个芯片的引脚,这个时候最好采用动态添加控件的方法来解决。当然,实际开发中,不管是用designer,还是用硬编码,最好都要学习下,因为我们不知道客户的需求是什么,所以不得不做两手准备。

        前面我们说过,基本上所有的界面都是按照grid,或者vertical、horizontal这种layout布局来进行控件增减的,只要掌握了这个思路,界面的绘制就问题不大了。今天,我们针对同一个需求,采用了三种不同的方法来实现,大家可以简单对比下。

1、创建一个widget工程

        为了测试,先用qt widget wizard创建一个简单的基本工程。

2、用designer进行界面开发

        开发的内容不复杂,就是三行、六个控件。第一行是一个label、一个text,label上是ID。第二行是一个label、一个text,label上是Name。第三行是两个按钮,一个写着OK,一个写着Cancel。这部分,如果用designer来做,就是这样的,直接拖动对应的控件到windows桌面即可,

f74717981b5d4d9c83e753ad945852bb.png

3、利用grid进行布局

        如果不用designer来做,那么可以用grid来实现。用grid的话,就相当于是一个三行两列的矩阵。0行0列放label ID、0行1列放text、1行0列放Name,依次类推,等到所有的控件都放满了,界面也就布局结束了。



newCodeMoreWhite.png

4、利用QVBoxLayout和QHBoxLayout完成

        上面一种方法,是直接利用grid网格来做的。如果控件本身不是很规范的话,也可以通过QVBoxLayout和QHBoxLayout嵌套的方法来解决。以这个小项目为例,首先我们需要创建三个QHBoxLayout,每个QHBoxLayout放两个控件,或者是一个label、一个text,或者是两个button。这一步做好了之后,再把三个QHBoxLayout压入到QVBoxLayout当中。而QVBoxLayout呢,直接当作参数赋值给window的setLayout函数即可。这也是一种处理的方法。



newCodeMoreWhite.png

        对于界面固定部分的内容,还是尽量走designer来实现比较好,毕竟实际开发效率要高很多。但是如果涉及到非固定控件的开发,可以选择用硬编码的方法来实现。这是任何gui平台都会遇到的问题,之前c# wpf也是一样,也需要拎出来单独进行处理的。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK