Qt实现MDI应用程序
本文记录Qt实现MDI应用程序的相关操作实现
目录
2.4. MDI父窗体上定义action,点击时 转换为TFormDoc窗体,进行对应方法的处理
2.5 将子窗体中的文本框编辑信号,绑定到窗体的QWidget 的公有槽函数 setWindowModified(bool),会修改 windowModified 属性的值。
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);
}
原文地址:https://blog.csdn.net/castlooo/article/details/140441240
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!