#include "CodeEdtUI.h" #include #include #include #include #include #include #include #include #include #include "SyntaxHighlighter.h" #include "../DockTitleBar.h" #include "../DockWidget.h" CodeEdtUI::CodeEdtUI(QWidget *parent) : QMainWindow(parent) { ui.setupUi(this); // 创建代码编辑器 editor = new QPlainTextEdit(this); QFont serifFont("Times", 20, QFont::Bold); editor->setFont(serifFont); syntaxHighlighter = new SyntaxHighlighter(editor->document()); setCentralWidget(editor); // 创建菜单 QMenu* fileMenu = menuBar()->addMenu(tr("&file")); QAction* openAction = new QAction(tr("&Import the template"), this); QAction* saveAction = new QAction(tr("&save"), this); fileMenu->addAction(openAction); fileMenu->addAction(saveAction); connect(openAction, &QAction::triggered, this, &CodeEdtUI::openFile); connect(saveAction, &QAction::triggered, this, &CodeEdtUI::saveFile); // 状态栏 statusBar(); } void CodeEdtUI::AttachDock(DockWidget* dockWidget) { if (nullptr == dockWidget) { qDebug() << __FUNCTION__ << "dockwidget is nullptr"; return; } dockWidget->SetDockWidgetTitleBar(nullptr); dockWidget->setWidget(this); DockTitleBar* dockTitleBar = new DockTitleBar; dockTitleBar->SetTitle(tr("matlab editor")); dockWidget->SetDockWidgetTitleBar(dockTitleBar); } void CodeEdtUI::openFile() { QString fileName = QFileDialog::getOpenFileName(this, "Open File", "", "Matlab Files (*.m)"); if (!fileName.isEmpty()) { QFile file(fileName); if (file.open(QIODevice::ReadOnly | QIODevice::Text)) { QTextStream in(&file); editor->setPlainText(in.readAll()); file.close(); } } } void CodeEdtUI::saveFile() { QString fileName = QFileDialog::getSaveFileName(this, "Save File", "", "Matlab Files (*.m)"); if (!fileName.isEmpty()) { QFile file(fileName); if (file.open(QIODevice::WriteOnly | QIODevice::Text)) { QTextStream out(&file); out << editor->toPlainText(); file.close(); } } }