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同理