QT实现抽屉菜单
实现一个点击按钮后弹出下方更多选项或者文本内容的功能
基础逻辑:创建一个QScrollArea,里面包含多个pushbutton和多个widget,然后通过点击pushbutton显隐widget即可。
目录
一、创建控件编辑
二、设置widget的最大大小
三、设置Scrollarea布局的layoutSpacing和layoutSizeConstraint的内容
四、代码实现显隐
一、创建控件![]()
二、设置widget的最大大小
不设置这一步可能导致显示widget显示得特别大,这是一种方式,文章最后还有一种占位的方式。
三、设置Scrollarea布局的layoutSpacing和layoutSizeConstraint的内容
四、代码实现显隐
//.h bool flag_4 = false; bool flag_5 = false; //.cpp void MainWindow::on_pushButton_4_clicked() { if(!flag_4){ ui->widget_4->hide(); flag_4 = true; }else{ ui->widget_4->show(); flag_4 = false; } } void MainWindow::on_pushButton_5_clicked() { if(!flag_5){ ui->widget_5->hide(); flag_5 = true; }else{ ui->widget_5->show(); flag_5 = false; } }补充:占位方式让widget控件隐藏的时候,pushbutton不会下移
//.h // 保存抽屉内容原始高度 int m_dWidgetHeight = 0; int m_lkWidgetHeight = 0; //.cpp .... { ui->setupUi(this); // 记录widget展开时的高度 m_dWidgetHeight = ui->widgetDataEntry->height(); m_lWidgetHeight = ui->widgetLabWork->height(); } //槽函数中 isDataEntry = !isDataEntry;//先翻转了判断变量,这个就是之前的flag_4 if(isDataEntry) { // 展开:恢复原始高度,显示内容 ui->widgetD->setFixedHeight(m_dWidgetHeight); ui->widgetD->setVisible(isDataEntry); } else { // 收起:高度置0,看不见,但是控件占位存在!下方按钮不会移动 ui->widgetD>setFixedHeight(0); ui->widgetD->setVisible(isDataEntry); }//另一个flag_5同理