本文主要是介绍《Qt入门(四)-- Qt动态布局QGridLayout》,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
QGridLayout 添加窗口addWidget函数
初始化布局
依次是从左往右添加第0行,第0列 ;第0行,第1列;第1行,第0列;第1行,第1列;
然后依次对setRowStretch设置行比例参数(4:1),setColumnStretch设置列比例(2:1)
QFramlayout = new QGridLayout();QFramlayout->setSpacing(5);//设置间距QFramlayout->addWidget(pfdstructment , 0, 0);//往网格的不同坐标添加不同的组件QFramlayout->addWidget(enginestructment, 0, 1);QFramlayout->addWidget(pfdengstructment, 1, 0);QFramlayout->addWidget(engpfdstructment, 1, 1);QFramlayout->setRowStretch( 0, 4);//设置行列比例系数QFramlayout->setRowStretch( 1, 1);QFramlayout->setColumnStretch(0, 2);QFramlayout->setColumnStretch(1, 1);this->setLayout(QFramlayout);//设置顶级布局管理器
切换显示单一页面
动态切换页面时,先使用removeWidget清除窗口和setRowStretch设置比例0不然会导致比例依旧存在
setVisible让窗口实现隐藏功能
/*******************************************************************
** 函数名: RemoveAllPage
** 函数描述: 清除页面
** 参数: painter 画刷
** 返回:
********************************************************************/
void Qflyfram::RemoveAllPage(void)
{QFramlayout->removeWidget(pfdstructment);QFramlayout->removeWidget(enginestructment);QFramlayout->removeWidget(pfdengstructment);QFramlayout->removeWidget(engpfdstructment);QFramlayout->setRowStretch( 0, 0);//第二个参数为0表示清除设置比例QFramlayout->setRowStretch( 1, 0);QFramlayout->setColumnStretch(0, 0);QFramlayout->setColumnStretch(1, 0);pfdstructment ->setVisible(false);enginestructment->setVisible(false);pfdengstructment->setVisible(false);engpfdstructment->setVisible(false);
}
/*******************************************************************
** 函数名: ShowPage
** 函数描述: 显示切换页面
** 参数:
** 返回:
********************************************************************/
void Qflyfram::ShowPage(int index)
{RemoveAllPage();if(0 == index){QFramlayout->addWidget(pfdstructment , 0, 0);//往网格的不同坐标添加不同的组件QFramlayout->addWidget(enginestructment, 0, 1);QFramlayout->addWidget(pfdengstructment, 1, 0);QFramlayout->addWidget(engpfdstructment, 1, 1);QFramlayout->setRowStretch( 0, 1);//设置行列比例系数QFramlayout->setRowStretch( 1, 0);QFramlayout->setColumnStretch(0, 0);QFramlayout->setColumnStretch(1, 0);pfdstructment ->setVisible(true);enginestructment->setVisible(false);pfdengstructment->setVisible(false);engpfdstructment->setVisible(false);}else if(1 == index){QFramlayout->addWidget(pfdstructment , 0, 0);//往网格的不同坐标添加不同的组件QFramlayout->addWidget(enginestructment, 0, 1);QFramlayout->addWidget(pfdengstructment, 1, 0);QFramlayout->addWidget(engpfdstructment, 1, 1);QFramlayout->setRowStretch( 0, 0);//设置行列比例系数QFramlayout->setRowStretch( 1, 1);QFramlayout->setColumnStretch(0, 0);QFramlayout->setColumnStretch(1, 0);pfdstructment ->setVisible(false);enginestructment->setVisible(true);pfdengstructment->setVisible(false);engpfdstructment->setVisible(false);}else if(2 == index){QFramlayout->addWidget(pfdstructment , 0, 0);//往网格的不同坐标添加不同的组件QFramlayout->addWidget(enginestructment, 0, 1);QFramlayout->addWidget(pfdengstructment, 1, 0);QFramlayout->addWidget(engpfdstructment, 1, 1);QFramlayout->setRowStretch( 0, 0);//设置行列比例系数QFramlayout->setRowStretch( 1, 0);QFramlayout->setColumnStretch(0, 1);QFramlayout->setColumnStretch(1, 0);pfdstructment ->setVisible(false);enginestructment->setVisible(false);pfdengstructment->setVisible(true);engpfdstructment->setVisible(false);}else if(3 == index){QFramlayout->addWidget(pfdstructment , 0, 0);//往网格的不同坐标添加不同的组件QFramlayout->addWidget(enginestructment, 0, 1);QFramlayout->addWidget(pfdengstructment, 1, 0);QFramlayout->addWidget(engpfdstructment, 1, 1);QFramlayout->setRowStretch( 0, 0);//设置行列比例系数QFramlayout->setRowStretch( 1, 0);QFramlayout->setColumnStretch(0, 0);QFramlayout->setColumnStretch(1, 1);pfdstructment ->setVisible(false);enginestructment->setVisible(false);pfdengstructment->setVisible(false);engpfdstructment->setVisible(true);}}
/*******************************************************************
** 函数名: ShowAll
** 函数描述: 显示所有页面
** 参数:
** 返回:
********************************************************************/
void Qflyfram::ShowAll(void)
{RemoveAllPage();QFramlayout->setSpacing(5);//设置间距QFramlayout->addWidget(pfdstructment , 0, 0);//往网格的不同坐标添加不同的组件QFramlayout->addWidget(enginestructment, 0, 1);QFramlayout->addWidget(pfdengstructment, 1, 0);QFramlayout->addWidget(engpfdstructment, 1, 1);QFramlayout->setRowStretch( 0, 4);//设置行列比例系数QFramlayout->setRowStretch( 1, 1);QFramlayout->setColumnStretch(0, 2);QFramlayout->setColumnStretch(1, 1);pfdstructment ->setVisible(true);enginestructment->setVisible(true);pfdengstructment->setVisible(true);engpfdstructment->setVisible(true);
}
这篇关于《Qt入门(四)-- Qt动态布局QGridLayout》的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!