Qt拖动ui控件实现抽屉效果

本文借鉴:nullicon-default.png?t=N7T8https://blog.csdn.net/Fdog_/article/details/108893736?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522170269112816800227495308%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=170269112816800227495308&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~rank_v31_ecpm-4-108893736-null-null.142^v96^pc_search_result_base8&utm_term=qt%E6%8A%BD%E5%B1%89%E5%BC%8F%E6%95%88%E6%9E%9C&spm=1018.2226.3001.4187

实现效果

由于Tool Box只能在同一时间打开一个页面,但是项目需要可以打开多个并且可以自由展开折叠,看了一些博主的博客,大多数都是以代码形式实现ui的,然后我找了一个方法只需要拖动ui控件就可以实现这个效果了。 

首先拖动一个Scroll Area控件

 然后拖三个pushbutton和三个widget,为了显眼我改个背景颜色

  然后把pushbutton和widget用垂直布局圈起来

然后把三个按钮页面添加到Scroll Area里面去,以垂直布局排列

 

然后把垂直布局里面的大小设成自己想要的大小,我设成了500×1000

 然后就看到可以上下滚动了

 然后把所有的widget都设置成固定的大小,最小尺寸和最大尺寸设置成相同

然后把这里面的间距改成0,选择SetMinAndMaxSize ,这会让控件从上到下依次没有间隔的排列,如果勾选默认的话,我们在折叠窗口的时候两个按钮之间会有很大的间隔,达不到我们想要的结果。

最后的效果

 下面是MainWindow.h的代码

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private slots:
    void on_pushButton_clicked();

    void on_pushButton_2_clicked();

    void on_pushButton_3_clicked();

private:
    Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H

下面是MainWindow.cpp的代码

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    ui->widget_1->setVisible(false);//初始化关闭子页面
    ui->widget_2->setVisible(false);
    ui->widget_3->setVisible(false);
}

MainWindow::~MainWindow()
{
    delete ui;
}

bool iswidget = false;   //判断子页面状态
bool iswidget2 = false;
bool iswidget3 = false;

void MainWindow::on_pushButton_clicked()
{
    if(iswidget == true)
    {
        ui->widget_1->setVisible(false);
        iswidget = false;
        ui->pushButton->setText("打开");
        return;
    }
    else
    {
        ui->widget_1->setVisible(true);
        iswidget = true;
        ui->pushButton->setText("隐藏");
        return;
    }
}

void MainWindow::on_pushButton_2_clicked()
{
    if(iswidget2 == true)
    {
        ui->widget_2->setVisible(false);
        iswidget2 = false;
        ui->pushButton_2->setText("打开");
        return;
    }
    else
    {
        ui->widget_2->setVisible(true);
        iswidget2 = true;
        ui->pushButton_2->setText("隐藏");
        return;
    }
}

void MainWindow::on_pushButton_3_clicked()
{
    if(iswidget3 == true)
    {
        ui->widget_3->setVisible(false);
        iswidget3 = false;
        ui->pushButton_3->setText("打开");
        return;
    }
    else
    {
        ui->widget_3->setVisible(true);
        iswidget3 = true;
        ui->pushButton_3->setText("隐藏");
        return;
    }
}

 

 

  • 7
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: Qt是一款跨平台的C++应用开发框架,具有强大的UI件库。QtUI件可以使用C++语言编写,并支持多种操作系统如Windows、Linux、macOS等。 在Qt中,UI件使用Qt Designer工具进行设计和布局。Qt Designer提供了一个可视化的图形界面,可以通过拖拽和释放的方式快速创建和修改UI界面。通过容器件如窗口、对话框和布局管理器,可以组合和排列UI件,使其具有良好的布局效果QtUI件库具有丰富的功能和样式,可以满足不同的需求。常见的UI件包括按钮、标签、文本框、列表框、下拉框、复选框等。这些件都可以在Qt Designer中直接拖拽到界面中,并通过属性编辑对其进行定制设置,如文字、颜色、大小等。 除了基础的UI件,Qt还提供了一些特殊的件,如进度条、滑动条、图形绘制、图表等,可以满足更复杂的UI需求。此外,Qt还支持用户自定义的UI件,可以根据自己的需要进行扩展和定制。 在使用QtUI件时,开发者需要编写对应的事件处理函数,通过连接信号和槽的方式响应用户的操作。通过信号和槽机制,UI件可以与后台的业务逻辑进行交互,实现更复杂的功能。 总而言之,QtUI件库提供了丰富的功能和样式,并且支持跨平台开发。开发者可以使用C++语言编写UI件的代码,并通过Qt Designer可视化工具进行设计和布局,从而快速开发出美观、可用性强的应用程序。 ### 回答2: Qt是一款跨平台的应用程序开发框架,提供了丰富的UI件供开发者使用。其UI件C示例如下: ```c++ #include <QApplication> #include <QWidget> #include <QPushButton> int main(int argc, char *argv[]) { QApplication app(argc, argv); // 创建一个窗口 QWidget window; window.setWindowTitle("Qt UI件示例"); // 创建一个按钮 QPushButton button("点击我", &window); button.setGeometry(50, 50, 100, 30); // 连接按钮的点击信号与槽函数 QObject::connect(&button, &QPushButton::clicked, [&]() { button.setText("已点击"); }); // 显示窗口 window.show(); // 运行应用程序 return app.exec(); } ``` 这个示例演示了一个简单的Qt程序,其中包含一个窗口和一个按钮。窗口的标题设置为"Qt UI件示例",按钮的文本设置为"点击我"。当按钮被点击时,按钮的文本会变为"已点击"。 在程序中,首先需要创建一个QApplication对象来管理应用程序的生命周期。然后创建一个QWidget窗口,并设置窗口的标题。接着创建一个QPushButton按钮,并将它作为窗口的子件。使用setGeometry函数可以设置按钮的位置和大小。 通过QObject::connect函数连接按钮的clicked信号与一个槽函数。在这个示例中,槽函数使用了Lambda表达式,当按钮被点击时,它会将按钮的文本设置为"已点击"。 最后,调用窗口的show函数显示窗口,然后调用QApplication的exec函数运行应用程序。这样,程序就进入了事件循环,等待事件的发生和处理。 通过这个示例,可以简单了解如何使用QtUI件来创建一个窗口和按钮,并监听按钮的点击事件。当然,Qt还提供了许多其他的UI件和功能,开发者可以根据自己的需求进行灵活运用。 ### 回答3: Qt是一个跨平台的应用程序开发框架,通过它可以轻松构建图形用户界面(UI)。Qt提供了丰富的UI件,可以用于创建各种交互式的窗口和界面。 在使用Qt编写UI界面时,可以使用Qt Designer来设计界面。Qt Designer是一个可视化界面设计工具,可以直接拖拽和放置各种UI件,并进行属性设置。设计好界面后,Qt Designer会生成一个.ui文件,它包含了界面的布局和件的属性。 在C++代码中使用QtUI件,首先需要将.ui文件转换为C++代码。Qt提供了一个uic工具,可以从.ui文件中生成对应的C++代码。可以使用类似下面的命令进行转换: uic input.ui -o output.h 转换完成后,可以把生成的output.h文件包含到项目中,并在代码中通过调用件的方法来实现功能。例如,可以通过QPushButton的clicked信号和相应的槽函数来处理按钮的点击事件;通过QLineEdit的textChanged信号和相应的槽函数来处理文本框内容的变化等等。 除了可以使用Qt Designer来设计界面外,也可以通过代码来创建和布局UI件。Qt提供了各种UI件的类,例如QPushButton、QLineEdit、QLabel等等。可以在代码中对这些件进行实例化,并设置它们的属性和布局关系。 最后需要注意的是,Qt提供了一套信号和槽机制用于处理件之间的交互和通信。信号是一种特殊的函数,当特定的事件发生时被触发;槽是接收信号的函数。在UI件中,经常会使用信号和槽来实现各种功能。 综上所述,QtUI件提供了丰富的功能和灵活的设计方式,可以用于开发各种跨平台的图形用户界面程序。只需要通过Qt Designer或者通过代码创建和布局UI件,然后利用信号和槽机制实现界面交互即可。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值