Qt实现MDI应用程序

本文记录Qt实现MDI应用程序的相关操作实现

目录

1.MDM模式下窗口的显示两种模式

1.1TabbedView 页签化显示

1.2 SubWindowView 子窗体显示

堆叠cascadeSubWindows

平铺tileSubWindows

2.MDM模式实现记录

2.1. 窗体继承自QMainWindow

2.2.增加组件MdiArea

2.3.定义统一TFormDoc作为子窗体

2.4. MDI父窗体上定义action,点击时 转换为TFormDoc窗体,进行对应方法的处理

2.5 将子窗体中的文本框编辑信号,绑定到窗体的QWidget 的公有槽函数 setWindowModified(bool),会修改 windowModified 属性的值。

2.6. 子窗体激活事件

2.7. MDI模式切换


1.MDM模式下窗口的显示两种模式

1.1TabbedView 页签化显示

1.2 SubWindowView 子窗体显示

两种样式 堆叠和平铺

堆叠cascadeSubWindows

平铺tileSubWindows

2.MDM模式实现记录

2.1. 窗体继承自QMainWindow

void MdiMainWindow::closeEvent(QCloseEvent *event)
{
    ui->mdiArea->closeAllSubWindows();
    event->accept();
}

MdiMainWindow::MdiMainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MdiMainWindow)
{
    ui->setupUi(this);

    setCentralWidget(ui->mdiArea);
    setWindowState(Qt::WindowMaximized);
}

2.2.增加组件MdiArea

2.3.定义统一TFormDoc作为子窗体

2.4. MDI父窗体上定义action,点击时 转换为TFormDoc窗体,进行对应方法的处理

void MdiMainWindow::on_actPaste_triggered()
{
    TFormDoc *form  = (TFormDoc*)ui->mdiArea->activeSubWindow()->widget();
    form->textPaste();
}

2.5 将子窗体中的文本框编辑信号,绑定到窗体的QWidget 的公有槽函数 setWindowModified(bool),会修改 windowModified 属性的值。

 connect(ui->plainTextEdit,&QPlainTextEdit::modificationChanged,this,&QWidget::setWindowModified);

2.6. 子窗体激活事件

激活的时候,在statusBar上显示一下信息

void MdiMainWindow::on_mdiArea_subWindowActivated(QMdiSubWindow *arg1)
{
    Q_UNUSED(arg1);
    if(ui->mdiArea->subWindowList().size()==0)
    {
        ui->actCut->setEnabled(false);
        ui->actCopy->setEnabled(false);
        ui->actPaste->setEnabled(false);
        ui->actFont->setEnabled(false);
        ui->statusbar->clearMessage();
    }
    else
    {
        TFormDoc *form  = static_cast<TFormDoc*>(ui->mdiArea->activeSubWindow()->widget());
        ui->statusbar->showMessage(form->currentFileName());
    }
}

2.7. MDI模式切换

void MdiMainWindow::on_actViewMode_triggered(bool checked)
{
    if(checked)//多页显示模式
          ui->mdiArea->setViewMode(QMdiArea::TabbedView);
    else
        ui->mdiArea->setViewMode(QMdiArea::SubWindowView);
    ui->mdiArea->setTabsClosable(checked);
    ui->actCascade->setEnabled(!checked);
    ui->actTile->setEnabled(!checked);
}

  • 8
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. 创建MDI主窗口 在Qt Creator中创建一个新的Qt Widgets应用程序项目,选择“Main Window”模板。然后,将mainwindow.ui文件中的QWidget更改为QMdiArea,并将其设置为MainWindow的中心窗口。 2. 制作菜单栏 在Qt Creator的设计模式下,可以从左侧的Widgets栏中拖动QMenuBar控件到MainWindow的顶部。然后,在属性编辑器中,单击“编辑动作”按钮以打开菜单编辑器。在此处,您可以添加菜单和子菜单,以及与它们相关联的动作。 3. 制作工具栏 在Qt Creator的设计模式下,可以从左侧的Widgets栏中拖动QToolBar控件到MainWindow的顶部。然后,您可以从属性编辑器中添加动作,或者单击“编辑动作”按钮以打开动作编辑器,并在其中添加动作。 4. 将动作与菜单和工具栏相关联 在动作编辑器中,您可以将动作与菜单和工具栏相关联。例如,您可以将一个动作添加到文件菜单中,并将其命名为“打开”,然后将其添加到工具栏中。这样,用户可以通过单击菜单项或工具栏按钮来执行相同的操作。 5. 在代码中处理动作 在mainwindow.cpp文件中,将动作与其槽函数相关联。例如,如果您将“打开”动作添加到菜单和工具栏中,则可以将其槽函数实现为打开文件对话框,并将所选文件加载到QMdiArea中的子窗口中。 这些步骤可以帮助您创建一个具有菜单栏和工具栏的MDI主窗口,并将其动作与代码相关联。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值