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));
}


你可能感兴趣的:(find)