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