C基础学习笔记——01-C基础第14天(IDE)
在学习C基础总结了笔记,并分享出来。有问题请及时联系博主:Alliswell_WP,转载请注明出处。
01-C基础第14天(IDE)
目录:
QT创建IDE
项目:记事本
QT创建IDE
注意:1.QT对中文兼容性不好(建路径也不要有中文),2.保证gcc可用
项目:记事本
设置项目注意:
1)选中“图形化界面”
2)点击“在这里插入”,输入“文件”,然后回车,点击“在这里插入”:输入拼音(后续改成中文)dakai,xinjian,baocun,lingcunwei,点击“添加分隔符”再次点击“在这里插入”:输入拼音tuichu。
改中文:法一:找到dakai,双击打开“编辑动作”,文本后dakai改成“打开”
法二:选中dakai,在右侧“属性”栏找到“text”,把后边的dakai改成“打开”
优化:在会弹出新的对话框的后边加三个点,如:“打开...”或者快捷键
3)点击“在这里插入”,输入“编辑”,然后回车,点击“在这里插入”:输入拼音chexiao,fuzhi,zhantie,jianqie。
注意:按住某个,如“fuzhi”可以更改位置。后续按2)改成中文。
4)点击“在这里插入”,输入“构建”,然后回车,点击“在这里插入”:输入拼音bianji。后续按2)改成中文。
5)点击“在这里插入”,输入“帮助”,然后回车,点击“在这里插入”:输入拼音guanyu。后续按2)改成中文。
6)添加文本框,搜索“Text Edit”,选中,拖拽到图形化界面,更改文本框大小。
7)实现可以扩大缩小:先点击前景界面“文本框”,在点击后景界面“背景”,选中上方“九宫格”。边距设置:在对象“MainWindow”的属性栏(下边)中找到“Layout”,把“layoutLeftMargin”设置为0,“layoutTopMargin”设置为0,“layoutRightMargin”设置为0,“layoutBottomMargin”设置为0。把下边的边去掉:在对象“MainWindow”的“menuBar”的“statusBar”,选中,右键点击“移除”。
8)更改标题栏:先点击“MainWindow”,然后在对象“MainWindow”的属性栏(下边)中找到“windowTitle”,“MainWindow”更改为“集成化开发环境”。
注意:千万别改“objectName”!
9)更改图标:先把要用的图标app.ico放到项目文件夹下。QT界面“左侧”点击编辑,选中:IDE.pro,打开,然后在租后增加一句:RC_ICONS = app.ico(app.ico为图标的名字)。
注意:进程卡死,或打开多个运行出错,无法关闭,点击红色的框!
10)在下边名称处右击“转到槽”,选中“triggered()”,点击“ok”,出现“事件”,可以编辑事件on_action_4_triggered():
1 void MainWindow::on_action_4_triggered() 2 { 3 //打开文件 4 /*1、foprn(文件名,打开方式) 5 * 2、判断可用性 6 * 3、读取内容 7 * 4、关闭 8 */ 9 //通过对话框打开文件 获取文件路径 QString 10 fileName = QFileDialog::getOpenFileName(); 11 //cout<<"===="<<fileName<<"===="; 12 //将QString转化为char * 13 QTextCodec * codec = QTextCodec::codecForName("GBK"); 14 15 //char * file =codec->fromUnicode(fileName).data();看是否可用,如果不可用,用下边的两句 16 QByteArray ba = fileName.toLatin1(); 17 char * file =ba.data(); 18 FILE * fp = fopen(file,"r"); 19 if(!fp) 20 return; 21 char buf[1024]; 22 QString txt; 23 while(!feof(fp)) 24 { 25 memset(buf,0,1024); 26 fgets(buf,1024,fp); 27 //cout<<buf; 28 txt +=codec->toUnicode(buf); 29 } 30 31 //为文本输入标签设置内容 32 ui->textEdit->setText(txt); 33 34 fclose(fp); 35 }
注意:需要打开的文本编码是GBK格式的!
如需要改显示字体,在对象“MainWindow”的属性栏(下边)中找到“font”在“font”中更改
扩展:构造函数和析构函数
11)on_actionBaocun_triggered“保存”代码:
1 void MainWindow::on_actionBaocun_triggered() 2 { 3 if(fileName==NULL) 4 //打开文件 5 fileName = QFileDialog::getSaveFileName(); 6 7 //转码 8 QTextCodec * codec = QTextCodec::codecForName("GBK"); 9 10 char * file = codec->fromUnicode(fileName).data(); 11 12 //读取textedit 13 QString txt = ui->textEdit->toPlainText(); 14 //转成char* 15 const char * buf = txt.toStdString().data(); 16 17 saveFile(file,buf); 18 19 20 }
12)新建
1 void MainWindow::on_action_5_triggered() 2 { 3 //ui->textEdit->setText(""); 4 5 //提示是用户保存 6 ui->textEdit->clear(); 7 fileName.clear(); 8 }
13)另存为
1 void MainWindow::on_action_7_triggered() 2 { 3 4 //提示是用户保存 5 exit(0); 6 }
14)撤销
1 void MainWindow::on_action_8_triggered() 2 { 3 //撤销 4 ui->textEdit->undo(); 5 }
15)拷贝
1 void MainWindow::on_action_9_triggered() 2 { 3 //拷贝 4 ui->textEdit->copy(); 5 }
16)粘贴
1 void MainWindow::on_action_10_triggered() 2 { 3 //粘贴 4 ui->textEdit->paste(); 5 }
17)剪切
1 void MainWindow::on_action_11_triggered() 2 { 3 //剪切 4 ui->textEdit->cut(); 5 }
18)编译
1 void MainWindow::on_action_12_triggered() 2 { 3 /* 1、保存文件(如果文件保存) 4 * 2、组装gcc格式 5 * 3、编译 如果出错提示错误信息 运行程序 6 * 7 */ 8 if(fileName ==NULL) 9 { 10 11 fileName = QFileDialog::getSaveFileName(); 12 QTextCodec * codec = QTextCodec::codecForName("GBK"); 13 const char * file = codec->fromUnicode(fileName).data(); 14 15 QString txt = ui->textEdit->toPlainText(); 16 const char * buf = txt.toStdString().data(); 17 saveFile(file,buf); 18 } 19 else 20 { 21 //gcc -o D:\a.exe D:\a.c 22 23 QString des = fileName; 24 des.replace(".c",".exe"); 25 //cout<<des; 26 char comm[1024]="gcc -o "; 27 strcat(comm,des.toStdString().data()); 28 strcat(comm," "); 29 strcat(comm,fileName.toStdString().data()); 30 31 //程序编译成功system 返回值为0 32 if(!system(comm)) 33 { 34 char cmd[256]="cmd /k "; 35 strcat(cmd,des.toStdString().data()); 36 cout<<cmd; 37 system(cmd); 38 } 39 else 40 { 41 //cmd /k gcc -o D:\a.exe D:\a.c 42 char cmd[256] = "cmd /k "; 43 strcat(cmd,comm); 44 system(cmd); 45 } 46 } 47 48 49 }
mainwindow.cpp代码如下:
1 #include "mainwindow.h" 2 #include "ui_mainwindow.h" 3 4 #include <QTextCodec> 5 #include <QFileDialog> 6 #include <QString> 7 #include <QDebug> 8 #include <QByteArray> 9 #include <string.h> 10 #define cout qDebug() 11 12 13 QString fileName=NULL; 14 MainWindow::MainWindow(QWidget *parent) : 15 QMainWindow(parent), 16 ui(new Ui::MainWindow) 17 { 18 ui->setupUi(this); 19 } 20 21 MainWindow::~MainWindow() 22 { 23 delete ui; 24 } 25 26 void MainWindow::saveFile(const char * file,const char * buf) 27 { 28 FILE * fp = fopen(file,"w"); 29 if(!fp) 30 return; 31 32 //保存文件 33 fputs(buf,fp); 34 35 fclose(fp); 36 } 37 38 void MainWindow::on_action_4_triggered() 39 { 40 //打开文件 41 /*1、foprn(文件名,打开方式) 42 * 2、判断可用性 43 * 3、读取内容 44 * 4、关闭 45 */ 46 //通过对话框打开文件 获取文件路径 QString 47 fileName = QFileDialog::getOpenFileName(); 48 //cout<<"===="<<fileName<<"===="; 49 //将QString转化为char * 50 QTextCodec * codec = QTextCodec::codecForName("GBK"); 51 52 //char * file =codec->fromUnicode(fileName).data(); 53 QByteArray ba = fileName.toLatin1(); 54 char * file =ba.data(); 55 FILE * fp = fopen(file,"r"); 56 if(!fp) 57 return; 58 char buf[1024]; 59 QString txt; 60 while(!feof(fp)) 61 { 62 memset(buf,0,1024); 63 fgets(buf,1024,fp); 64 //cout<<buf; 65 txt +=codec->toUnicode(buf); 66 } 67 68 //为文本输入标签设置内容 69 ui->textEdit->setText(txt); 70 71 fclose(fp); 72 } 73 74 void MainWindow::on_actionBaocun_triggered() 75 { 76 if(fileName==NULL) 77 //打开文件 78 fileName = QFileDialog::getSaveFileName(); 79 80 //转码 81 QTextCodec * codec = QTextCodec::codecForName("GBK"); 82 83 char * file = codec->fromUnicode(fileName).data(); 84 85 //读取textedit 86 QString txt = ui->textEdit->toPlainText(); 87 //转成char* 88 const char * buf = txt.toStdString().data(); 89 90 saveFile(file,buf); 91 92 93 } 94 95 void MainWindow::on_action_5_triggered() 96 { 97 //ui->textEdit->setText(""); 98 99 //提示是用户保存 100 ui->textEdit->clear(); 101 fileName.clear(); 102 } 103 104 void MainWindow::on_action_7_triggered() 105 { 106 107 //提示是用户保存 108 exit(0); 109 } 110 111 void MainWindow::on_action_8_triggered() 112 { 113 //撤销 114 ui->textEdit->undo(); 115 } 116 117 void MainWindow::on_action_9_triggered() 118 { 119 //拷贝 120 ui->textEdit->copy(); 121 } 122 123 void MainWindow::on_action_10_triggered() 124 { 125 //粘贴 126 ui->textEdit->paste(); 127 } 128 129 void MainWindow::on_action_11_triggered() 130 { 131 //剪切 132 ui->textEdit->cut(); 133 } 134 135 void MainWindow::on_action_12_triggered() 136 { 137 /* 1、保存文件(如果文件保存) 138 * 2、组装gcc格式 139 * 3、编译 如果出错提示错误信息 运行程序 140 * 141 */ 142 if(fileName ==NULL) 143 { 144 145 fileName = QFileDialog::getSaveFileName(); 146 QTextCodec * codec = QTextCodec::codecForName("GBK"); 147 const char * file = codec->fromUnicode(fileName).data(); 148 149 QString txt = ui->textEdit->toPlainText(); 150 const char * buf = txt.toStdString().data(); 151 saveFile(file,buf); 152 } 153 else 154 { 155 //gcc -o D:\a.exe D:\a.c 156 157 QString des = fileName; 158 des.replace(".c",".exe"); 159 //cout<<des; 160 char comm[1024]="gcc -o "; 161 strcat(comm,des.toStdString().data()); 162 strcat(comm," "); 163 strcat(comm,fileName.toStdString().data()); 164 165 //程序编译成功system 返回值为0 166 if(!system(comm)) 167 { 168 char cmd[256]="cmd /k "; 169 strcat(cmd,des.toStdString().data()); 170 cout<<cmd; 171 system(cmd); 172 } 173 else 174 { 175 //cmd /k gcc -o D:\a.exe D:\a.c 176 char cmd[256] = "cmd /k "; 177 strcat(cmd,comm); 178 system(cmd); 179 } 180 } 181 182 183 } 184 185 void MainWindow::on_action_6_triggered() 186 { 187 //打开文件 188 fileName = QFileDialog::getSaveFileName(); 189 190 //转码 191 QTextCodec * codec = QTextCodec::codecForName("GBK"); 192 193 char * file = codec->fromUnicode(fileName).data(); 194 195 //读取textedit 196 QString txt = ui->textEdit->toPlainText(); 197 //转成char* 198 const char * buf = txt.toStdString().data(); 199 200 saveFile(file,buf); 201 }
mainwindow.h代码如下:
1 #ifndef MAINWINDOW_H 2 #define MAINWINDOW_H 3 4 #include <QMainWindow> 5 6 namespace Ui { 7 class MainWindow; 8 } 9 10 class MainWindow : public QMainWindow 11 { 12 Q_OBJECT 13 14 public: 15 explicit MainWindow(QWidget *parent = 0); 16 ~MainWindow(); 17 18 private slots: 19 void on_action_4_triggered(); 20 21 void on_actionBaocun_triggered(); 22 23 void on_action_5_triggered(); 24 25 void on_action_7_triggered(); 26 27 void on_action_8_triggered(); 28 29 void on_action_9_triggered(); 30 31 void on_action_10_triggered(); 32 33 void on_action_11_triggered(); 34 35 36 void saveFile(const char * file,const char * buf); 37 38 void on_action_12_triggered(); 39 40 void on_action_6_triggered(); 41 42 private: 43 Ui::MainWindow *ui; 44 }; 45 46 #endif // MAINWINDOW_H
在学习C基础总结了笔记,并分享出来。有问题请及时联系博主:Alliswell_WP,转载请注明出处。
posted on 2020-06-03 20:12 Alliswell_WP 阅读(182) 评论(0) 编辑 收藏 举报