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();
相关推荐
皮皮林5511 小时前
使用 Java + WebSocket 实现简单实时双人协同 pk 答题
java·websocket
码小凡2 小时前
优雅!用了这两款插件,我成了整个公司代码写得最规范的码农
java·后端
掉鱼的猫4 小时前
Solon AI 五步构建 RAG 服务:2025 最新 AI + 向量数据库实战
java·redis·后端
java金融4 小时前
FactoryBean 和BeanFactory的傻傻的总是分不清?
java·后端
独立开阀者_FwtCoder5 小时前
Nginx 通过匹配 Cookie 将请求定向到特定服务器
java·vue.js·后端
名曰大神5 小时前
AEM6.5集成Redis详细步骤(附代码)
java·redis·demo·aem
带刺的坐椅5 小时前
Solon AI 五步构建 RAG 服务:2025 最新 AI + 向量数据库实战
java·redis·ai·solon·rag
东阳马生架构5 小时前
商品中心—7.自研缓存框架的技术文档
java
晴空月明8 小时前
线程安全与锁机制深度解析
java
天天摸鱼的java工程师9 小时前
你如何处理一个高并发接口的线程安全问题?说说你做过的优化措施
java·后端