Qt如何将一个界面加入另一个界面


本文要讲的知识点就一个,如何在Qt中将一个界面加入另一个界面,有没有在开发中遇到过呢?速来围观吧!

我们知道QtCreator中是有集成界面(UI)设计器的,可以在设计器中拖拽控件到界面文件上(*.ui文件)。将一个界面加入另一个界面就用到了一个控件QScrollArea,接下来就讲解如何使用该控件完成如题所示的功能。

假设:有一个mainwindow.ui的界面类,有一个test.ui的界面类,我们将test.ui界面加入mainwindow.ui界面。

首先:在mainwindow.ui界面中,加入QScrollArea,从QtCreator中拖入进去即可(或者自己手写代码添加),

这里我们假设QScrollArea控件的名称是myArea。(记住该假设)

然后:在mainwindow.h头文件中包含Test类的头文件,并定义Test类对象的指针,如下:

#ifndef MAINWINDOW_H    
#define MAINWINDOW_H
   
#include <QMainWindow>
#include "test.h"     //包含Test类的头文件
namespace Ui
{
    class  MainWindow;
}    
class MainWindow:public QMainWindow{
        Q_OBJECT    
    public:
        explicit  MainWindow(QWidget*parent=0);
        ~MainWindow();
        void setUi();   
    private:
        Ui::MainWindow *ui;
        Test *widget;        //定义Test类对象的指针
};    

#endif    //MAINWINDOW_H

最后:调用QScrollArea的 void setWidget(QWidget *widget)方法即可。

在mainwindow.cpp中的构造函数中添加如下代码:

widget = new Test();

ui->myArea->setWidget(widget);

至此,本文要讲述的知识点就结束了。

再补充一点:如果再new一个Test类的对象,再添加到myArea中,那么之前添加的widget就会被释放,

并且会成为野指针。即:

widget2 = new Test();

ui->myArea->setWidget(widget2);

在执行完上述两行代码后,widget指向的对象被释放,widget成为了野指针。

好了,本文就介绍到这里了,希望阅读的你有收获。

 

推荐一个开卷有益的公众号:IT平头哥

专注于编程基础知识的分享,助你夯实编程基础

IT平头哥

 

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

云镛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值