mainwindow.h:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H #include <QMenu>
#include <QAction>
#include <QFont>
#include <QToolBar>
#include <QLabel>
#include <QComboBox>
#include <QLineEdit>
#include <QTextEdit>
#include <QPrinter>
#include <QVBoxLayout>
#include <QGridLayout>
#include <QActionGroup>
#include <QPrintDialog>
#include <QPushButton>
#include <QToolButton>
#include <QTextStream>
#include <QMessageBox>
#include <QTextCodec>
#include <QMainWindow>
#include <QFileDialog>
#include <QFontDialog>
#include <QInputDialog>
#include <QFontDatabase>
#include <QFontComboBox>
#include <QColorDialog> namespace Ui {
class MainWindow;
} class MainWindow : public QMainWindow
{
Q_OBJECT public:
explicit MainWindow(QWidget *parent = );
void createAction();
void createMenu();
void createToolBar();
void fileRead();//读文件
void fileWrite();//写文件
~MainWindow(); public:
Ui::MainWindow *ui;
QMenu *file;
QMenu *edit;
QMenu *style;
QMenu *insert;//插入菜单
QMenu *search;//查找菜单
QMenu *help;//帮助菜单 QToolBar *fileToolBar;
QToolBar *editToolBar;
QToolBar *styleToolBar;
QToolBar *insertToolBar;
QToolBar *searchToolBar;
QToolBar *helpToolBar; QTextEdit *textEdit; QAction *newFile;
QAction *openFile;
QAction *save;
QAction *saveAs;
QAction *printText;
QAction *exit; QAction *undoAction;//撤销
QAction *redoAction;//恢复
QAction *copy;
QAction *cut;
QAction *paste; QAction *insertImg;
QAction *insertTable; QAction *find; QAction *about;
QAction *aboutQt; QAction *bold;
QAction *italic;
QAction *underLine;
QAction *color; QAction *left;
QAction *center;
QAction *right;
QAction *justify;
QActionGroup *group; QLabel *fontLabel;
QLabel *fontSizeLabel;
QFontComboBox *fontCom;
QComboBox *fontSizeCom; QString fileName; QLineEdit *lineEdit;
QLabel *label;
QPushButton *btn;
QVBoxLayout *layout; QLineEdit *column;
QLineEdit *row; private slots:
void findNext(); void NewFile();
void OpenFile();
void Save();
void SaveAs();
void Color();
void Bold();
void Italic();
void UnderLine();
void ALignment(QAction *);
void PrintText();
void InsertImage();
void InsertTable();
void mergeFormat(QTextCharFormat);
void FontComBox(QString fontComStr);
void FontSizeCom(QString fontSizeStr);
void Find();
void About();
void AboutQt();
void showCurrentCharFormatChanged(const QTextCharFormat &form); };

mainwindow.cpp:

#endif // MAINWINDOW_H
mainwindow.cpp:
#include "mainwindow.h"
#include "ui_mainwindow.h" MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
QTextCodec::setCodecForTr(QTextCodec::codecForLocale());
setWindowIcon(QIcon(":/images/textEditor.png"));
setWindowTitle(tr("Qt文本编辑器"));
textEdit = new QTextEdit();
setCentralWidget(textEdit);
createAction();//创建动作
createMenu();//创建菜单
createToolBar();//创建工具栏 //文件菜单的动作与槽的连接
connect(newFile,SIGNAL(triggered()),this,SLOT(NewFile()));
connect(openFile,SIGNAL(triggered()),this,SLOT(OpenFile()));
connect(save,SIGNAL(triggered()),this,SLOT(Save()));
connect(saveAs,SIGNAL(triggered()),this,SLOT(SaveAs()));
connect(exit,SIGNAL(triggered()),this,SLOT(close()));
//编辑菜单的动作与槽的连接
connect(cut,SIGNAL(triggered()),textEdit,SLOT(cut()));
connect(copy,SIGNAL(triggered()),textEdit,SLOT(copy()));
connect(paste,SIGNAL(triggered()),textEdit,SLOT(paste()));
connect(undoAction,SIGNAL(triggered()),textEdit,SLOT(undo()));
connect(redoAction,SIGNAL(triggered()),textEdit,SLOT(redo()));
//字体设置动作与槽的连接
connect(fontCom,SIGNAL(activated(QString)),this,
SLOT(FontComBox(QString)));
//字号设置动作与槽的连接
connect(fontSizeCom,SIGNAL(activated(QString)),this,SLOT(FontSizeCom(QString))); connect(textEdit,SIGNAL(currentCharFormatChanged(QTextCharFormat&)),
this,SLOT(showCurrentCharFormatChanged(QTextCharFormat&))); //颜色编辑动作与槽的连接
connect(color,SIGNAL(triggered()),this,SLOT(Color()));
//格式菜单动作与槽的连接
connect(bold,SIGNAL(triggered()),this,SLOT(Bold()));
connect(italic,SIGNAL(triggered()),this,SLOT(Italic()));
connect(underLine,SIGNAL(triggered()),this,SLOT(UnderLine())); connect(group,SIGNAL(triggered(QAction*)),this,SLOT(ALignment(QAction *)));
//插入菜单动作与槽的连接
connect(insertImg,SIGNAL(triggered()),this,SLOT(InsertImage()));
connect(insertTable,SIGNAL(triggered()),this,SLOT(InsertTable()));
//打印动作与槽的连接
connect(printText,SIGNAL(triggered()),this,SLOT(PrintText()));
//查找菜单动作与槽的连接
connect(find,SIGNAL(triggered()),this,SLOT(Find())); connect(about,SIGNAL(triggered()),this,SLOT(About()));
connect(aboutQt,SIGNAL(triggered()),this,SLOT(AboutQt()));
resize(,);
} //创建动作 void MainWindow::createAction(){
QTextCodec::setCodecForTr(QTextCodec::codecForLocale());
//新建文件
newFile = new QAction(QIcon(":/images/new.png"),tr("新建文件"),this);
newFile->setShortcut(tr("Ctrl+N"));
newFile->setStatusTip(tr("新建一个文件"));
//打开文件
openFile = new QAction(QIcon(":/images/open.png"),tr("打开文件"),this);
openFile->setShortcut(tr("Ctrl+O"));
openFile->setStatusTip(tr("打开一个文件"));
//保存文件
save = new QAction(QIcon(":/images/save.png"),tr("保存"),this);
save->setShortcut(tr("Ctrl+S"));
save->setStatusTip(tr("保存文件"));
//另存为
saveAs = new QAction(QIcon(":/images/saveAs.png"),tr("另存为"),this);
saveAs->setShortcut(tr("Ctrl+A"));
saveAs->setStatusTip(tr("文件另存为"));
//打印
printText = new QAction(QIcon(":/images/printText.png"),tr("打印"),this);
printText->setShortcut(tr("Ctrl+P"));
printText->setStatusTip(tr("打印"));
//退出
exit = new QAction(QIcon(":/images/exit.png"),tr("退出"),this);
exit->setShortcut(tr("Ctrl+E"));
exit->setStatusTip(tr("退出"));
//恢复
redoAction = new QAction(QIcon(":/images/redo.png"),tr("恢复"),this);
redoAction->setShortcut(tr("Ctrl+R"));
redoAction->setStatusTip(tr("恢复"));
//撤销
undoAction = new QAction(QIcon(":/images/undo.png"),tr("撤销"),this);
undoAction->setShortcut(tr("Ctrl+U"));
undoAction->setStatusTip(tr("撤销"));
//剪切
cut = new QAction(QIcon(":/images/cut.png"),tr("剪切"),this);
cut->setShortcut(tr("Ctrl+X"));
cut->setStatusTip(tr("剪切"));
//复制
copy = new QAction(QIcon(":/images/copy.png"),tr("复制"),this);
copy->setShortcut(tr("Ctrl+C"));
copy->setStatusTip(tr("复制"));
//粘贴
paste = new QAction(QIcon(":/images/paste.png"),tr("黏贴"),this);
paste->setShortcut(tr("Ctrl+P"));
paste->setStatusTip(tr("粘贴")); //粗体
bold = new QAction(QIcon(":/images/bold.png"),tr("粗体"),this);
bold->setStatusTip(tr("粗体字"));
bold->setCheckable(true);
//斜体
italic = new QAction(QIcon(":/images/italic.png"),tr("斜体"),this);
italic->setStatusTip(tr("斜体字"));
italic->setCheckable(true);
//下划线
underLine = new QAction(QIcon(":/images/underline.png"),tr("下划线"),this);
underLine->setStatusTip(tr("下划线"));
underLine->setCheckable(true);
//颜色
color = new QAction(QIcon(":/images/color.png"),tr("颜色"),this);
color->setShortcut(tr("Ctrl+C"));
color->setStatusTip(tr("颜色编辑")); group = new QActionGroup(this);
//左对齐
left = new QAction(QIcon(":/images/left.png"),tr("左对齐"),group);
left->setStatusTip(tr("左对齐"));
left->setCheckable(true);
//居中
center = new QAction(QIcon(":/images/center.png"),tr("居中对齐"),group);
center->setStatusTip(tr("居中对齐"));
center->setCheckable(true);
//右对齐
right = new QAction(QIcon(":/images/right.png"),tr("右对齐"),group);
right->setStatusTip(tr("右对齐"));
right->setCheckable(true);
//两端对齐
justify = new QAction(QIcon(":/images/justify.png"),tr("两端对齐"),group);
justify->setStatusTip(tr("两端对齐"));
justify->setCheckable(true); group->addAction(left);
group->addAction(center);
group->addAction(right);
group->addAction(justify);
//插入图片
insertImg = new QAction(QIcon(":/images/image.png"),tr("插入图片"),this);
insertImg->setStatusTip(tr("插入图片"));
//插入表格
insertTable = new QAction(QIcon(":/images/table.png"),tr("插入表格"),this);
insertTable->setStatusTip(tr("插入表格"));
//查找
find = new QAction(QIcon(":/images/find.png"),tr("查找"),this);
find->setShortcut(tr("Ctrl+F"));
find->setStatusTip(tr("查找"));
//关于
about = new QAction(QIcon(":/images/about.png"),tr("关于"),this);
about->setStatusTip(tr("关于")); //字体
fontLabel = new QLabel(tr("字体"));
fontCom = new QFontComboBox();
fontCom->setFontFilters(QFontComboBox::ScalableFonts);
fontCom->setStatusTip(tr("字体设置"));
//字号
fontSizeLabel = new QLabel(tr("字号"));
QFontDatabase db;
fontSizeCom = new QComboBox();
foreach(int size,db.standardSizes())
fontSizeCom->addItem(QString::number(size));
fontSizeCom->setStatusTip(tr("字号设置"));
//关于
aboutQt = new QAction(tr("关于QT"),this);
aboutQt->setStatusTip(tr("关于Qt")); } //创建菜单
void MainWindow::createMenu(){
//文件菜单
file = menuBar()->addMenu(tr("文件(&F)"));
file->addAction(newFile);
file->addAction(openFile);
file->addSeparator();
file->addAction(save);
file->addAction(saveAs);
file->addSeparator();
file->addAction(printText);
file->addSeparator();
file->addAction(exit);
//编辑菜单
edit = menuBar()->addMenu(tr("编辑(&E)"));
edit->addAction(undoAction);
edit->addAction(redoAction);
edit->addSeparator();
edit->addAction(cut);
edit->addAction(copy);
edit->addAction(paste);
//插入菜单
insert = menuBar()->addMenu(tr("插入(&I)"));
insert->addAction(insertImg);
insert->addAction(insertTable);
//查找菜单
search = menuBar()->addMenu(tr("查找(&F)"));
search->addAction(find);
//格式菜单 style = menuBar()->addMenu(tr("格式(&S)"));
style->addAction(bold);
style->addAction(italic);
style->addAction(underLine);
style->addSeparator();
style->addAction(color);
style->addSeparator();
style->addAction(left);
style->addAction(center);
style->addAction(right);
style->addAction(justify);
//帮助菜单
help = menuBar()->addMenu(tr("帮助(&H)"));
help->addAction(about);
help->addAction(aboutQt); }
//创建工具栏
void MainWindow::createToolBar(){
//文件
fileToolBar = addToolBar(tr("文件(&N)"));
fileToolBar->addAction(newFile);
fileToolBar->addAction(openFile);
fileToolBar->addSeparator(); fileToolBar->addAction(save);
fileToolBar->addAction(saveAs);
fileToolBar->addSeparator(); fileToolBar->addAction(printText);
fileToolBar->addSeparator();
//编辑
editToolBar = addToolBar(tr("编辑(&E)"));
editToolBar->addAction(undoAction);
editToolBar->addAction(redoAction);
editToolBar->addSeparator();
editToolBar->addAction(cut);
editToolBar->addAction(copy);
editToolBar->addAction(paste);
//格式
styleToolBar = addToolBar(tr("格式(&S)"));
styleToolBar->addAction(bold);
styleToolBar->addAction(italic);
styleToolBar->addAction(underLine);
styleToolBar->addSeparator(); styleToolBar->addAction(left);
styleToolBar->addAction(center);
styleToolBar->addAction(right);
styleToolBar->addAction(justify);
styleToolBar->addSeparator(); styleToolBar->addWidget(fontLabel);
styleToolBar->addWidget(fontCom);
styleToolBar->addWidget(fontSizeLabel);
styleToolBar->addWidget(fontSizeCom);
//插入
insertToolBar = addToolBar(tr("插入(&I)"));
insertToolBar->addAction(insertImg);
insertToolBar->addAction(insertTable);
insertToolBar->addSeparator();
//查找
searchToolBar = addToolBar(tr("查找(&F)"));
searchToolBar->addAction(find);
search->addSeparator();
} //封装的读文件,用于精简程序
void MainWindow::fileRead(){
QFile file(fileName);
if(!file.open(QFile::ReadOnly|QFile::Text)){
QMessageBox::warning(this,tr("多文档编辑器"),
tr("不可以打开文件%1:\n%2").arg(fileName).arg(file.errorString()));
return;
}
QTextStream in(&file);
QApplication::setOverrideCursor(Qt::WaitCursor);
textEdit->setPlainText(in.readAll());
QApplication::restoreOverrideCursor();
}
//封装的写文件,用于精简程序
void MainWindow::fileWrite(){
QFile file(fileName); if(!file.open(QFile::WriteOnly|QFile::Text)){
QMessageBox::warning(this,tr("多文档编辑器"),
tr("不可以写入文件%1:/n%2").arg(fileName).arg(file.errorString()));
return;
} QTextStream out(&file);
QApplication::setOverrideCursor(Qt::WaitCursor);
out<<textEdit->toPlainText();
QApplication::restoreOverrideCursor();
return;
}
//新建文件
void MainWindow::NewFile(){
MainWindow *newEdit = new MainWindow;
newEdit->show();
}
//打开文件
void MainWindow::OpenFile(){
fileName = QFileDialog::getOpenFileName(this,tr("打开文件"),"/","allFile(*.*)");
if(!fileName.isEmpty()){ if(textEdit->document()->isEmpty()){
fileRead();
}else{
MainWindow *newEdit = new MainWindow;
newEdit->show();
QFile file(fileName);
if(!file.open(QFile::ReadOnly|QFile::Text)){
QMessageBox::warning(this,tr("多文档编辑器"),
tr("不可以打开文件%1:\n%2").arg(fileName).arg(file.errorString()));
return;
}
QTextStream in(&file);
QApplication::setOverrideCursor(Qt::WaitCursor);
newEdit->textEdit->setPlainText(in.readAll());
QApplication::restoreOverrideCursor(); } }
}
//保存文件
void MainWindow::Save(){ if(fileName.isEmpty()){
fileName = QFileDialog::getSaveFileName(this,tr("另存为"),tr("未命名.txt"));
fileWrite();
}else{
fileWrite();
} }
//另存为
void MainWindow::SaveAs(){ fileName = QFileDialog::getSaveFileName(this,tr("另存为"),tr("未命名.txt"));
fileWrite();
} //字体设置
void MainWindow::FontComBox(QString fontComStr){
QTextCharFormat format;
format.setFontFamily(fontComStr);
mergeFormat(format);
}
void MainWindow::mergeFormat(QTextCharFormat format){
QTextCursor cursor = textEdit->textCursor();
if(!cursor.hasSelection())
cursor.select(QTextCursor::WordUnderCursor);
cursor.mergeCharFormat(format);
textEdit->mergeCurrentCharFormat(format); }
//字号设置
void MainWindow::FontSizeCom(QString fontSizeStr){
QTextCharFormat format;
format.setFontPointSize(fontSizeStr.toFloat());
textEdit->mergeCurrentCharFormat(format);
} //颜色设置
void MainWindow::Color(){
QColor color = QColorDialog::getColor(Qt::blue,this);
if(color.isValid()){
QTextCharFormat format;
format.setForeground(color);
textEdit->mergeCurrentCharFormat(format);
}
}
//粗体
void MainWindow::Bold(){
QTextCharFormat format;
format.setFontWeight(bold->isChecked()?QFont::Bold:QFont::Normal);
textEdit->mergeCurrentCharFormat(format);
}
//斜体
void MainWindow::Italic(){
QTextCharFormat format;
format.setFontItalic(italic->isChecked());
textEdit->mergeCurrentCharFormat(format); }
//下划线
void MainWindow::UnderLine(){ QTextCharFormat format;
format.setFontUnderline(underLine->isChecked());
textEdit->mergeCurrentCharFormat(format);
}
//对齐
void MainWindow::ALignment(QAction *act){
if(act == left){
textEdit->setAlignment(Qt::AlignLeft);
}else if(act == center){
textEdit->setAlignment(Qt::AlignCenter);
}else if(act == right){
textEdit->setAlignment(Qt::AlignRight);
}else if(act == justify){
textEdit->setAlignment(Qt::AlignJustify);
} } //插入图片
void MainWindow::InsertImage(){ QTextCursor cursor = textEdit->textCursor();
QTextImageFormat format;
QString image = QFileDialog::getOpenFileName(this,"insert image","/","png(*.png)");
format.setName(image);
cursor.insertImage(format); } //插入表格,用到输入对话框
void MainWindow::InsertTable(){
bool ok;
int a = QInputDialog::getInt(this,tr("插入表格"),tr("输入行数:"),,,,,&ok);
int b = QInputDialog::getInt(this,tr("插入表格"),tr("输入列数:"),,,,,&ok);
if(ok){ QTextCursor cursor = textEdit->textCursor(); QTextTableFormat format;
format.setCellSpacing();
format.setCellPadding(); cursor.insertTable(a,b,format); }
} //查找
void MainWindow::Find(){
QDialog *dialog = new QDialog(this);
dialog->setWindowTitle(tr("查找"));
lineEdit = new QLineEdit(dialog);
label = new QLabel(this);
btn = new QPushButton(dialog);
btn->setText(tr("下一个"));
connect(btn,SIGNAL(clicked()),this,SLOT(findNext())); layout = new QVBoxLayout();
layout->addWidget(lineEdit);
layout->addWidget(btn);
dialog->setLayout(layout);
dialog->resize(,);
dialog->show(); } void MainWindow::findNext(){ QString str = lineEdit->text(); bool isfind = textEdit->find(str,QTextDocument::FindBackward); if(isfind){
label->setText(tr("查找目标在,行号:%1 列号:%2!").arg(textEdit->textCursor().blockNumber()).arg(textEdit->textCursor().columnNumber()));
ui->statusBar->addPermanentWidget(label);
} }
//打印
void MainWindow::PrintText(){
QPrinter printer;
QPrintDialog printDialog(&printer,this);
if(printDialog.exec()){
QTextDocument *textDocument = textEdit->document();
textDocument->print(&printer);
}
} //帮助 void MainWindow::About(){
QMessageBox::about(this,tr("关于"),tr("这是一个文本编辑器")); } void MainWindow::AboutQt(){
QMessageBox::aboutQt(this,tr("Qt编辑器"));
} void MainWindow::showCurrentCharFormatChanged(const QTextCharFormat &form){ fontCom->setCurrentIndex(fontCom->findText(form.fontFamily()));
fontSizeCom->setCurrentIndex(fontSizeCom->findText(QString::number(form.fontPointSize())));
bold->setChecked(form.font().bold());
italic->setChecked(form.font().italic());
underLine->setChecked(form.font().underline());
} MainWindow::~MainWindow()
{
delete ui;
}

main.cpp:

#include <QApplication>
#include "mainwindow.h" int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show(); return a.exec();
}

C++ GUI Qt4编写的文本编辑器的更多相关文章

  1. Java编写的文本编辑器(菜鸟作品)

    //这是主窗体文件 Wordwin.java import javax.swing.*; import javax.swing.event.DocumentEvent; import javax.sw ...

  2. Python GUI文本编辑器

    使用Python编写一个简单的文本编辑器,需要展示一个用户界面,功能包括打开.保存文本文件. 使用tkinter库来编写GUI. #简单GUI文本编辑器 from tkinter import * f ...

  3. 170509、文本编辑器编写的shell脚本在linux下无法执行的解决方法

    今天碰到一个奇怪的问题,编写好的shell脚本再linux上执行一直提示找不到文件或目录,后来想想是文本编辑器的问题,记录下来!!! 1.查看当前文本格式 Notepad++界面中,在右下角有文件格式 ...

  4. 假期作业02:安装JDK与文本编辑器并编写第一个Java程序

    假期作业02:安装JDK与文本编辑器并编写第一个Java程序 一.安装JDK与文本编辑器并编写第一个java程序 首先在oracle官网(需要创建账号,进行登录后方可使用)按照自己的需求下载JDK(h ...

  5. JS编写自己的富文本编辑器

    富文本编辑器,网上有很多功能齐全种类丰富的如百度的Ueditor,简单适用型的如WangEditor等等.在经过一番挑选后,我发现都不适用现在的项目,然后决定自己造轮子玩玩.富文本编辑器中主要涉及到J ...

  6. tinymce 富文本编辑器 编写资料

    tinymce官方文档: 粘贴图片插件 博客搬运地址 使用Blob获取图片并二进制显示实例页面 tinymce自动调整插件 是时候掌握一个富文本编辑器了——TinyMCE(1) XMLHttpRequ ...

  7. Unix及类Unix系统文本编辑器的介绍

    概述 Vim是一个类似于Vi的著名的功能强大.高度可定制的文本编辑器,在Vi的基础上改进和增加了很多特性.VIM是纯粹的自由软件. Vim普遍被推崇为类Vi编辑器中最好的一个,事实上真正的劲敌来自Em ...

  8. 最优秀的5个Linux文本编辑器

    from: http://article.yeeyan.org/view/169956/174836 作为不久前举办的比赛的一部分内容,我从那些选出他们最喜欢的Linux文本编辑器的极客读者们那获得了 ...

  9. 如何评价 GitHub 发布的文本编辑器 Atom?

    这里是HN上的讨论:GitHub's new text editor leaked on Twitter这里是github page:Atom · GitHub 好多repo啊我不知道有没有知友了解更 ...

随机推荐

  1. Notes(一)

    Numerous experimental measurements in spatially complex systems have revealed anomalous diffusion in ...

  2. mysql事物

    一. 什么是事务 事务就是一段sql 语句的批处理,但是这个批处理是一个atom(原子) ,不可分割,要么都执行,要么回滚(rollback)都不执行. 二.为什么出现这种技术 为什么要使用事务这个技 ...

  3. HDU 5289 Assignment(2015 多校第一场二分 + RMQ)

    Assignment Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total ...

  4. [RxJS] just, return

    Sometime, we migth just want to return a object which wrap into Observable. You can use 'just' or  ' ...

  5. C 队列顺序存储

    #ifndef __MY_SEQLIST_H__ #define __MY_SEQLIST_H__ typedef void SeqList; typedef void SeqListNode; // ...

  6. Mechanism of Loading Resources

    Mechanism of Loading Resources 1. Distributed strategy 1.1. Developer guilde 1.2. Notes 2. Centraliz ...

  7. Route Filters

    Route Filters The Controller's Middleware, represents a High-Level processing API, executed by the r ...

  8. 路径(keyPath)、键值编码(KVC)和键值观察(KVO)

    键路径 在一个给定的实体中,同一个属性的所有值具有相同的数据类型. 键-值编码技术用于进行这样的查找—它是一种间接访问对象属性的机制. - 键路径是一个由用点作分隔符的键组成的字符串,用于指定一个连接 ...

  9. 下拉列表(web),用jQuery实现

    <!DOCTYPE html><html><head>    <meta http-equiv="Content-Type" conten ...

  10. 配置LINUX为路由

    配置:关闭防火墙 linux1    地址1: 192.168.10.10/24 地址2:192.168.20.10/24(不指定网关,做为路由,自己就是网关) linux2    地址1: 192. ...