【QT】MDI应用程序设计

本文介绍了MDI(Multiple Document Interface)的概念,并详细讲解了如何设计和使用文档窗口类QFormDoc,以及MDI主窗口的设计,包括子窗口的创建、加入以及QMdiArea的功能。还探讨了QMdiArea的两种视图模式——SubWindowView和TabbedView,并展示了信号subWindowActivated在窗口切换时的应用。
摘要由CSDN通过智能技术生成

目录

1 MDI简介

2 文档窗口类QFormDoc的设计

3 MDI主窗口设计与子窗口的使用

3.1 主窗口界面设计

3.2 MDI子窗口的创建与加入

3.3 QMdiArea常用功能函数

3.4 MDI的信号

1 MDI简介

        传统的应用程序设计中有多文档界面(Multi-documentInterface,MDI)应用程序,Qt为设计
MDI应用程序提供了支持。
        本节的实例samp6_4是一个MDI应用程序,程序运行效果如图6-14所示。MDI应用程序就
是在主窗口里创建多个同类型的MDI子窗口,这些MDI子窗口在主窗口里显示,并共享主窗口
上的工具栏和菜单等操作功能,主窗口上的操作都针对当前活动的MDI子窗口进行。
        设计MDI应用程序需要在主窗口工作区放置一个QMdiArea作为子窗体的容器。实例samp6_4
主窗口的工作区使用一个QMdiArea组件,实例的子窗口类是QFormDoc,是一个使用QPlainTextEdit进行简单文本显示和编辑的窗体。
图6-14 MDI应用程序实例samp6_4的运行时界面
        创建的QFormDoc窗体对象作为一个子窗口加入到mdiArea组件中。QMdiArea组件类似于 实例 samp6_3 中主窗口上的 tabWidget 组件,只是 QMdiArea 提供更加完备的功能。更改 MDI 的 显示模式,可以得到与实例 samp6_3 相似的以多页组件管理的 MDI 界面效果。

2 文档窗口类QFormDoc的设计

        以可视化方式创建一个基于QWidget的类QFormDoc,设计可视化界面时,只放置一个 QPlainTextEdit组件,并以水平布局填充满整个窗口。这里不再用可视化的方式设计Action,因为 QFormDoc窗口不需要创建自己的工具栏,而是使用主窗口上的工具栏按钮对QFormDoc窗体上
的QPlainTextEdit组件进行操作。
        为QFormDoc添加一些用于文件打开和编辑操作的接口函数,QFormDoc类的完整定义如下:
class QFormDoc : public QWidget
{
    Q_OBJECT

private:
    QString mCurrentFile; //当前文件
    bool    mFileOpened=false; //文件已打开

public:
    explicit QFormDoc(QWidget *parent = 0);
    ~QFormDoc();

    void    loadFromFile(QString& aFileName); //打开文件
    QString currentFileName();//返回当前文件名
    bool    isFileOpened();//文件已经打开

    void    setEditFont();//设置字体
    void    textCut(); //cut
    void    textCopy(); //copy
    void    textPaste(); //paste

private:
    Ui::QFormDoc *ui;

};

                这些接口函数是为了在主窗口里调用,实现对MDI子窗口的操作。实现代码如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

冷凝女子

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

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

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

打赏作者

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

抵扣说明:

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

余额充值