本例程实现控件的隐藏、显示,以及控件的移动。
对于控件的信号与槽等基础技术在这里不再累赘,直接进入关键技术点:
本例程中,当按下按钮时,列表框上移,按钮与列表框之间的控件隐藏;当再次按下按钮时,,列表框下移,按钮与列表框之间的控件显示。
一、记录要移动控件的前后位置
声明
/** @brief 列表控件上移位置矩形*/QRect listMatchResultUpRT;/** @brief 列表控件下移位置矩形*/QRect listMatchResultDnRT;
定义
void featureMatchQtDlgI::initAdvancedControlRT(){listMatchResultUpRT = ui->labelInitSamplePro->geometry();listMatchResultDnRT = ui->listMatchResult->geometry();listMatchResultUpRT.setWidth(listMatchResultDnRT.width());listMatchResultUpRT.setHeight(listMatchResultDnRT.height());} 二、移动隐藏与移动显示函数
移动隐藏
void featureMatchQtDlgI::hideAdvancedControl(){ui->labelInitSamplePro->setVisible(false);ui->labelContrastThreshold->setVisible(false);ui->labelMatchThreshold->setVisible(false);ui->labelMaxMatchNumber->setVisible(false);ui->combInitSampPro->setVisible(false);ui->spinContrastThreshold->setVisible(false);ui->spinMatchThreshold->setVisible(false);ui->spinMaxMatchNumber->setVisible(false);ui->listMatchResult->setGeometry(listMatchResultUpRT);}
移动显示
void featureMatchQtDlgI::showAdvancedControl(){ui->listMatchResult->setGeometry(listMatchResultDnRT);ui->labelInitSamplePro->setVisible(true);ui->labelContrastThreshold->setVisible(true);ui->labelMatchThreshold->setVisible(true);ui->labelMaxMatchNumber->setVisible(true);ui->combInitSampPro->setVisible(true);ui->spinContrastThreshold->setVisible(true);ui->spinMatchThreshold->setVisible(true);ui->spinMaxMatchNumber->setVisible(true);}
三、按钮槽函数
static bool isOpenAdvancedSetting = false;if(isOpenAdvancedSetting){isOpenAdvancedSetting = false;hideAdvancedControl();}else{isOpenAdvancedSetting = true;showAdvancedControl();}
程序运行结果:
只要有信心,人永远不会挫败