1. 程式人生 > >QT實現一個簡易文字編輯器

QT實現一個簡易文字編輯器

setFixedSize(640,480);//設定視窗介面大小
//選單欄
newaction1=newQAction(QIcon("newfile.png"),"新建",this);//action的圖示,名字,父類
newaction1->setShortcut(QKeySequence("Ctrl+N"));//設定快捷鍵
newaction2=newQAction(QIcon("openfile.png"),"開啟",this);
newaction2->setShortcut(QKeySequence("Ctrl+O"));
newaction3=newQAction(QIcon("savefile.png"
),"儲存",this);
newaction3->setShortcut(QKeySequence("Ctrl+S"));
newaction4=newQAction(QIcon("closefile.png"),"關閉",this);
newaction4->setShortcut(QKeySequence("Ctrl+Q"));
newaction5=newQAction(QIcon("osave.png"),"另存為",this);
newaction5->setShortcut(QKeySequence("Ctrl+E"));
menu1=menuBar()->addMenu("檔案"
);//新建一個檔案選單
menu1->addAction(newaction1);
menu1->addAction(newaction2);
menu1->addAction(newaction3);
menu1->addAction(newaction4);
menu1->addAction(newaction5);
newaction6=newQAction(QIcon("font.png"),"字型",this);
newaction7=newQAction(QIcon("color.png"),"字型顏色",this);
menu2=menuBar()->addMenu("設定"
);
menu2->addAction(newaction6);
menu2->addAction(newaction7);
//工具欄
tob1=addToolBar("新建");//裡面新增任意字串
tob1->addAction(newaction1);
tob2=addToolBar("開啟");
tob2->addAction(newaction2);
tob3=addToolBar("儲存");
tob3->addAction(newaction5);
tob5=addToolBar("另存為");
tob5->addAction(newaction9);
tob4=addToolBar("關閉");
tob4->addAction(newaction6);
    tob6=addToolBar("字型");
tob6->addAction(newaction7);
tob7=addToolBar("字型顏色");
tob7->addAction(newaction8);
//文字編輯框
tedt=newQTextEdit(this);
this->setCentralWidget(tedt);//把文字編輯框新增到中間
tedt->setEnabled(false);//文字編輯使能:關閉
//狀態列
//statusBar()->showMessage("狀態");
lab=newQLabel("狀態",this);
lab->setText("狀態");
stb=statusBar();
stb->addWidget(lab);
connect(newaction1,SIGNAL(triggered()),this,SLOT(newfile()));
connect(newaction2,SIGNAL(triggered()),this,SLOT(openfile()));
connect(newaction3,SIGNAL(triggered()),this,SLOT(savefile()));
connect(newaction4,SIGNAL(triggered()),this,SLOT(closefile()));
connect(newaction6,SIGNAL(triggered()),this,SLOT(font()));
connect(newaction7,SIGNAL(triggered()),this,SLOT(fontcolor()));
connect(newaction5,SIGNAL(triggered()),this,SLOT(osavefile()));
voidMainWindow::newfile()
{
tedt->setEnabled(true);//文字編輯使能:開
}
voidMainWindow::openfile()
{
myfilename=QFileDialog::getOpenFileNames(this,"檔案",".","Textfiles(*.txt);;XMLfiles(*.xml)");//開啟當前目錄中的檔案
QFilefile(myfilename[0]);
if(!file.open(QIODevice::ReadWrite))
{
statusBar()->showMessage("開啟失敗");
return;
}
statusBar()->showMessage("開啟成功");
tedt->setText(file.readAll());//把檔案中的內容顯示在文字框
tedt->setEnabled(true);//文字編輯使能:開
file.close();
}
voidMainWindow::savefile()
{
QFilefile1(myfilename[0]);
if(!file1.open(QIODevice::ReadWrite))
{
statusBar()->showMessage("儲存失敗");
return;
}
if(!file1.write(tedt->toPlainText().toStdString().c_str()))
{
statusBar()->showMessage("儲存失敗");
return;
}
statusBar()->showMessage("儲存成功");
file1.close();
}
voidMainWindow::osavefile()
{
myfile=QFileDialog::getSaveFileName();
QFilefile(myfile);
if(!file.open(QIODevice::ReadWrite)){
statusBar()->showMessage("檔案開啟失敗");
return;
}
if(!file.write(tedt->toPlainText().toStdString().c_str()))
{
statusBar()->showMessage("另存失敗");
return;
}
statusBar()->showMessage("另存成功");
file.close();
}
voidMainWindow::closefile()
{
tedt->setText("");
tedt->setEnabled(false);//文字編輯使能:關
}
voidMainWindow::font()
{
boolok;
QFontmyfont=QFontDialog::getFont(&ok,this);
if(ok)
{
tedt->setFont(myfont);
}
}
voidMainWindow::fontcolor()
{
QColormycolor=QColorDialog::getColor();
tedt->setTextColor(mycolor);
}
MainWindow::~MainWindow()
{
}