main.cpp
#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.resize(1000,800);
w.show();
return a.exec();
}
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QTextEdit>
#include <QMenu>
#include <QMenuBar>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
QString file_path;
QTextEdit *te;
QMenu *file;
QMenu *edit;
QMenu *build;
QAction *open;
QAction *save;
QAction *exit_;
QAction *copy;
QAction *paste;
QAction *cut;
QAction *buildc;
QAction *run;
~MainWindow();
private:
Ui::MainWindow *ui;
private slots:
void on_open_click();
void on_save_click();
void on_exit_click();
void on_copy_click();
void on_paste_click();
void on_cut_click();
void on_buildc_click();
void on_run_click();
};
#endif // MAINWINDOW_H
mainwindow.cpp
//
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
te=new QTextEdit;
QFont font;
font.setPointSize(10);
te->setFont(font);
this->setCentralWidget(te);
file=new QMenu("file");
this->menuBar()->addMenu(file);
edit=new QMenu("edit");
this->menuBar()->addMenu(edit);
build=new QMenu("build");
this->menuBar()->addMenu(build);
open=new QAction("open");
open->setShortcut(tr("ctrl+o"));
file->addAction(open);
save=new QAction("save");
save->setShortcut(tr("ctrl+s"));
file->addAction(save);
exit_=new QAction("eixt");
exit_->setShortcut(tr("ctrl+q"));
file->addAction(exit_);
connect(open,SIGNAL(triggered()),this,SLOT(on_open_click()));
connect(save,SIGNAL(triggered()),this,SLOT(on_save_click()));
connect(exit_,SIGNAL(triggered()),this,SLOT(on_exit_click()));
copy=new QAction("copy");
copy->setShortcut(tr("ctrl+c"));
edit->addAction(copy);
paste=new QAction("paste");
paste->setShortcut(tr("ctrl+v"));
edit->addAction(paste);
cut=new QAction("cut");
cut->setShortcut(tr("ctrl+x"));
edit->addAction(cut);
connect(copy,SIGNAL(triggered()),this,SLOT(on_copy_click()));
connect(paste,SIGNAL(triggered()),this,SLOT(on_paste_click()));
connect(cut,SIGNAL(triggered()),this,SLOT(on_cut_click()));
buildc=new QAction("buildc");
buildc->setShortcut(tr("ctrl+m"));
build->addAction(buildc);
run=new QAction("run");
run->setShortcut(tr("ctrl+r"));
build->addAction(run);
connect(buildc,SIGNAL(triggered()),this,SLOT(on_buildc_click()));
connect(run,SIGNAL(triggered()),this,SLOT(on_run_click()));
}
MainWindow::~MainWindow()
{
delete ui;
delete te;
delete file;
delete edit;
delete build;
delete open;
delete save;
delete exit_;
delete copy;
delete paste;
delete cut;
delete buildc;
delete run;
}
void MainWindow::on_open_click()
{
file_path=QFileDialog::getOpenFileName();
if(file_path.isEmpty())
return;
FILE *p =fopen(file_path.toStdString().data(),"r");
if(p==NULL)
{
QMessageBox::information(this,"notify","open file failure.");
return;
}
QString content;
char buf[1024]={0};
while(!feof(p)){
content+= fgets(buf,sizeof(buf),p);
}
fclose(p);
te->setText(content);
}
void MainWindow::on_save_click()
{
file_path=QFileDialog::getSaveFileName();
if(file_path==NULL)return;
FILE *p=fopen(file_path.toStdString().data(),"w");
fputs(te->toPlainText().toStdString().data(),p);
fclose(p);
}
void MainWindow::on_exit_click()
{
exit(0);
}
void MainWindow::on_copy_click()
{
te->copy();
}
void MainWindow::on_paste_click()
{
te->paste();
}
void MainWindow::on_cut_click()
{
te->cut();
}
void MainWindow::on_buildc_click()
{
QString dest=file_path;
dest.replace(".c","");
system(("gcc -o "+ dest +" "+ file_path).toStdString().data());
QMessageBox::information(this,"notify","build success!");
}
void MainWindow::on_run_click()
{
QString dest=file_path;
dest.replace(".c","");
system(dest.toStdString().data());
}