QT findChild() 及动态初始化窗体布局(原创)

在Qt中,凡是在一个类中new的对象只要在当前类的对象的生命周期内未被delete,都可以通过findChild()函数找到这个new出的对象,查找时,需传递一个QString的参数。
动态布局窗体,需要动静结合,窗体的外布局通过designer画出,然后需要实现动态挂子窗体的区域用代码写new 滚动区域及滚动区中的布局。
项目中的例子如下:
class wizardTestEdit
{
public:
void initview();
public slots:
void slotTreeCliked( QTreeWidgetItem * item )

}
void wizardtestEdit::initview()
{

//动态初始化窗体布局

QScrollArea* pScrollArea = new QScrollArea(layoutWidget);
pScrollArea->setBackgroundRole(QPalette::Background);
pScrollArea->setWidgetResizable(true);
vboxLayout2->addWidget(pScrollArea);//动态加滚动条域

QWidget *pContainer = new QWidget;
pContainer->setBackgroundRole(QPalette::BrightText);

QVBoxLayout *pVLayout = new QVBoxLayout;
pContainer->setLayout(pVLayout);
pScrollArea->setWidget(pContainer);//在滚动条域中加窗体

//为new出的对象加一个索引名方便在this对象中通过findChild函数随时调用这 个 new出的对象。
pScrollArea->setObjectName(QString::fromUtf8("pScrollArea"));

//调整分裂器的大小
QList<qint32> size;
size << 150 << 450;
splitter->setSizes(size);

//调整分裂器的大小
QList<qint32> size1;
size1 << 600 << 200;
splitter_2->setSizes(size1);
setWindowFlags(Qt::Window | Qt::WindowMaximizeButtonHint /*| Qt::WindowMinimizeButtonHint*/);

}
//
void wizardtestEdit::slotTreeCliked( QTreeWidgetItem * item )
{
QScrollArea* pScrollArea = this->findChild<QScrollArea*> ("pScrollArea");//凡是在类中new的对象都可以作为当前类的child被找到,通过Qstring查找这个new的对象,在new这个对象同时声明查找的Qstring名
int t=item->parent()->indexOfChild(item);
pScrollArea->ensureWidgetVisible(this->pDlgList.at(t));
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值