• 5993阅读
  • 7回复

如何动态布局窗体? [复制链接]

上一主题 下一主题
离线ny13524
 
只看楼主 倒序阅读 楼主  发表于: 2008-08-21
— 本帖被 XChinux 执行加亮操作(2008-08-25) —
自己写好一个基于QGroupBox的自定义类,自定义的GroupBox里面有布局好的label和button
然后我想在在一个窗体上显示多个自定义的GroupBox,其个数不定,显示的个数由数据库中读取
怎样能动态生成自己写的类,能不能想数组那样应用
如果是数组的话,可以先定义一个大小char a[10],然后在函数中一个一个读取char,这样实现
如果是自己类的话,怎样定义及调用?并且像GroupBox怎样动态布局?如果窗体固定显示2个,碰到需要显示3个怎么办?怎样能动态显示?
望高手指点?

离线icevi

只看该作者 1楼 发表于: 2008-08-22
问题好多啊,其实都是基础问题,你多看几个QT的例子应该就明白了。

在需用添加新控件时,用
QGroupBox* newwi=new QGroupBox();
创建对象,再看你想要把它添加到哪个layout对象中,比如:
layout1->addWidget(newwi);
这样就能动态创建和在界面上显示了。layout对象能管理好它的显示位置和大小缩放这些事情(应该就是你说的动态布局的意思)。
如果不需要添加到layout中,就直接用new QGroupBox(this);或new QGroupBox(someParentWidget);,然后设定其大小和位置。
====================
www.bilive.com
BiForm BiReader BiChat
最爱QT和PYTHON
====================
离线ny13524
只看该作者 2楼 发表于: 2008-08-22
回 1楼(icevi) 的帖子
非常感谢1楼的指点
试了下可以在一个窗体上显示多个自定义的GroupBox
在这里我用了个for循环,根据需要的个数生成GroupBox
窗体布局的还可以
只是下一步要想在生成的GroupBox上传值时出现问题
由于自定义的GroupBox里面已经含有布局好的label和button,想单个更新GroupBox里面的label和button属性及显示值时,需要根据GroupBox名寻找所含label和button.在for循环里面每次生成的GroupBox实例名称都一样,如何操作呀?怎样定位呀?
离线xuyantao
只看该作者 3楼 发表于: 2008-08-22
提供一个思路:每生成一个就把它放到一个链表里,给它命个名,以后就好找了
离线liuchuanwen
只看该作者 4楼 发表于: 2008-08-22
findChild()
离线ny13524
只看该作者 5楼 发表于: 2008-08-22
谢谢各位的回复,问题解决啦
离线ny13524
只看该作者 6楼 发表于: 2008-08-22
感谢各位的关注,我把解决方法简单说下:
先在for循环内生成i个GroupBox实例
QVector存放生成的各个实例
把QVector中的各个实例取出重命名(或直接用QVector声明的对象vector)
针对要更新的GroupBox进行操作
代码如下:
QVector<QMyGroupBox*> vector(4);
for(int i=0;i<num;i++)
{
QMyGroupBox * groupboxi=new QMyGroupBox(0);
vector=groupboxi;
}
完毕
再次感谢各位的指点!
离线icevi

只看该作者 7楼 发表于: 2008-08-22
new QMyGroupBox后也可以用setObjectName给它设定名字的。
可以通过对象名来查找控件,可以试一下。
====================
www.bilive.com
BiForm BiReader BiChat
最爱QT和PYTHON
====================
快速回复
限100 字节
 
上一个 下一个