QT之多个控件隐藏/显示(通用方法不仅适用于QT)

多个控件隐藏和显示

写在前面

在进行界面开发的工作时,常常涉及到不同界面的开发。尤其是通过菜单栏控制。
在前边,我们已经讲过如果将QT环境中的菜单栏点击事件与相应的功能(槽)函数进行连接,并实现相应的控件隐藏和显示。
但是一个成熟的软件,肯定不仅仅只有几个控件需要隐藏和显示。那么我们该如何做呢?
跟着我,一起往下看。

QT之容器控件

容器概念

容器控件是指允许在其内部添加其他控件的控件。在移动容器控件时,可以同时移动添加在容器内的控件。

特殊控件–页面类

在QT中包含着一些特殊的控件,这些控件看起来就像一个完整的页面。
当把这些控件的大小和变化设置为保持与软件大小一致时,就能够实现整个页面的切换。
在这里插入图片描述
添加后设置相关属性,并将需要的控件分别放入相关容器内
在这里插入图片描述
控件内容
在这里插入图片描述
容器属性:只需要将容易拉动到主界面一致大小,无需对其它属性进行更改。
在这里插入图片描述
至此添加完毕。
返回VS2022中,进行代码编写。
使用VS进行QT开发参见这篇文章:https://blog.csdn.net/MelyLenient/article/details/123854069
使用VS开发QT界面,自动生成槽函数参见这篇文章:
https://blog.csdn.net/MelyLenient/article/details/123907803
VS+QT开发添加Action动作参见这篇文章:
https://blog.csdn.net/MelyLenient/article/details/123929215

界面控制代码:

头文件

#pragma once

#include <QtWidgets/QMainWindow>
#include "ui_QtWidgetsApplication1.h"

class QtWidgetsApplication1 : public QMainWindow
{
    Q_OBJECT

public:
    QtWidgetsApplication1(QWidget *parent = Q_NULLPTR);

private:
    Ui::QtWidgetsApplication1Class ui;

    void p_hideControl();
private slots:
    void actionCOMBeSelected();
    void actionNETBeSelected();
};

Cpp文件

#include "QtWidgetsApplication1.h"

QtWidgetsApplication1::QtWidgetsApplication1(QWidget *parent)
    : QMainWindow(parent)
{
    ui.setupUi(this);
    p_hideControl();
}

void QtWidgetsApplication1::p_hideControl()
{
    ui.NETWidget->setVisible(false);
    ui.COMFrame->setVisible(false);
}
void QtWidgetsApplication1::actionCOMBeSelected()
{
    p_hideControl();
    ui.COMFrame->setVisible(true);
}
void QtWidgetsApplication1::actionNETBeSelected()
{
    p_hideControl();
    ui.NETWidget->setVisible(true);
}

下载源码:DownLoad

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
一次性在主界面上创建10000个按钮,会导致界面显示有延迟,因为创建和显示这么多控件需要消耗大量的时间和资源。为了解决这个问题,我们可以采用以下两种方法进行优化: 1. 使用QScrollArea和QGridLayout 可以使用QScrollArea和QGridLayout来优化界面显示。QGridLayout可以将控件放置在网格中,而QScrollArea可以为大量控件提供滚动视图。 具体步骤如下: a. 在主界面中创建一个QScrollArea控件,并将它设置为主界面的中心控件。 ```cpp QScrollArea* scrollArea = new QScrollArea(this); scrollArea->setWidgetResizable(true); setCentralWidget(scrollArea); ``` b. 在QScrollArea控件中创建一个QWidget控件,并将它设置为QScrollArea的滚动视图。 ```cpp QWidget* widget = new QWidget(scrollArea); scrollArea->setWidget(widget); ``` c. 在QWidget控件中创建一个QGridLayout控件,并将它设置为QWidget的布局管理器。 ```cpp QGridLayout* gridLayout = new QGridLayout(widget); widget->setLayout(gridLayout); ``` d. 使用循环创建并添加按钮到QGridLayout控件中。 ```cpp for (int i = 0; i < 10000; ++i) { QPushButton* button = new QPushButton(QString("Button %1").arg(i + 1), widget); gridLayout->addWidget(button, i / 100, i % 100); } ``` 2. 使用QListView和QStandardItemModel 可以使用QListView和QStandardItemModel来优化界面显示。QStandardItemModel是一个通用的数据模型类,可以用来存储任何类型的数据。QListView可以显示QStandardItemModel中的数据,并提供滚动视图。 具体步骤如下: a. 在主界面中创建一个QListView控件,并设置一个QStandardItemModel模型。 ```cpp QListView* listView = new QListView(this); QStandardItemModel* model = new QStandardItemModel(this); listView->setModel(model); ``` b. 使用循环添加QStandardItem到模型中。 ```cpp for (int i = 0; i < 10000; ++i) { QStandardItem* item = new QStandardItem(QString("Button %1").arg(i + 1)); model->appendRow(item); } ``` 这两种方法都可以优化界面显示,使界面更加流畅。具体使用哪种方法,取决于具体的需求和场景。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值