本例程实现控件的隐藏、显示,以及控件的移动。
对于控件的信号与槽等基础技术在这里不再累赘,直接进入关键技术点:
本例程中,当按下按钮时,列表框上移,按钮与列表框之间的控件隐藏;当再次按下按钮时,列表框下移,按钮与列表框之间的控件显示。
一、记录要移动控件的前后位置
声明
- /** @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();
- }
程序运行结果:
FROM: http://blog.csdn.net/cxp2205455256/article/details/44961597