QMdiArea多窗口

复制代码
关闭所有子窗口:
cpp 复制代码
void QWMainWindow::closeEvent(QCloseEvent *event)
{
    ui->mdiArea->closeAllSubWindows(); //关闭所有子窗口
    event->accept();
}

新建窗口:

cpp 复制代码
QFormDoc *formDoc = new QFormDoc(this); //
    ui->mdiArea->addSubWindow(formDoc); //文档窗口添加到MDI
    formDoc->show(); //在单独的窗口中显示

获取窗口并进行相关操作:

cpp 复制代码
void QWMainWindow::on_actCut_triggered()
{ //cut
    QFormDoc* formDoc=(QFormDoc*)ui->mdiArea->activeSubWindow()->widget();
    formDoc->textCut();
}

void QWMainWindow::on_actFont_triggered()
{//设置字体
    QFormDoc* formDoc=(QFormDoc*)ui->mdiArea->activeSubWindow()->widget();
    formDoc->setEditFont();
}

void QWMainWindow::on_actCopy_triggered()
{//copy
    QFormDoc* formDoc=(QFormDoc*)ui->mdiArea->activeSubWindow()->widget();
    formDoc->textCopy();
}

void QWMainWindow::on_actPaste_triggered()
{//paste
    QFormDoc* formDoc=(QFormDoc*)ui->mdiArea->activeSubWindow()->widget();
    formDoc->textPaste();
}
复制代码
当前活动子窗口切换时:
cpp 复制代码
void QWMainWindow::on_mdiArea_subWindowActivated(QMdiSubWindow *arg1)
{//当前活动子窗口切换时
    Q_UNUSED(arg1);
    if (ui->mdiArea->subWindowList().count()==0)
    { //若子窗口个数为零
        ui->actCut->setEnabled(false);
        ui->actCopy->setEnabled(false);
        ui->actPaste->setEnabled(false);
        ui->actFont->setEnabled(false);
        ui->statusBar->clearMessage();
    }
    else
    {
        QFormDoc *formDoc=static_cast<QFormDoc*>(ui->mdiArea->activeSubWindow()->widget());
        ui->statusBar->showMessage(formDoc->currentFileName()); //显示主窗口的文件名
    }
}

模式设置:

cpp 复制代码
MDI 显示模式
ui->mdiArea->setViewMode(QMdiArea::TabbedView); //Tab多页显示模式
        ui->mdiArea->setTabsClosable(true); //页面可关闭

子窗口模式
ui->mdiArea->setViewMode(QMdiArea::SubWindowView); //子窗口模式

窗口级联展开
    ui->mdiArea->cascadeSubWindows();

平铺展开
    ui->mdiArea->tileSubWindows();

关闭全部子窗口
    ui->mdiArea->closeAllSubWindows();
相关推荐
椰羊~王小美18 小时前
setScale没传roudingmode,为什么会报错
java
摘星编程18 小时前
Ascend C编程语言详解:打造高效AI算子的利器
c语言·开发语言·人工智能
WizLC18 小时前
【JAVA】JVM类加载器知识笔记
java·jvm·笔记
喝汽水的猫^18 小时前
Java实现Excel 导出(多 Sheet、复杂格式)
java·excel
毕设源码-朱学姐18 小时前
【开题答辩全过程】以 基于JavaWeb的疾病查询系统的设计与实现为例,包含答辩的问题和答案
java·eclipse
雨中飘荡的记忆19 小时前
Java面向对象编程详解
java·开发语言
zhangyifang_00919 小时前
Spring中的BeanFactory类
java·后端·spring
大学生资源网19 小时前
java毕业设计之面向校园的助力跑腿系统设计与实现源码(源码+文档+数据库)
java·数据库·mysql·毕业设计·源码·springboot
quikai198119 小时前
python练习第六组
java·前端·python
222you19 小时前
线程的常用方法
java·开发语言