1、下载
官网下载可能较慢这里使用清华镜像源来下载,下载链接
我这里下载的是5.12.9的版本,如果有其他版本需求可以跳转到其他目录下载即可
2、安装
下载完成后打开终端进入到下载目录,执行ls指令可以看到我们下载的文件
然后我们设置安装所需要的文件权限
sudo chmod u+x qt-opensource-linux-x64-5.12.9.run
然后就可以开始安装了执行.run文件会弹出安装界面
下一步登录qt账号密码
勾选同意开源协议然后下一步
然后是设置安装目录,建议在自己的工作目录新建一个QT文件夹来进行安装,然后选择要安装的组件
然后就是等待安装完成了,到了这一步QT设计师软件已经可以打开了,但是再编写我们程序之前还需要下一个步骤。
3、安装lib库
进行玩上一个安装步骤完成后编译第一个项目会出现cannt find -IGL问题,是因为没有按照libGL库,执行以下命令
sudo apt-get install libgl1-mesa-dev
Ubuntu一般都是带有gcc编译器的,如果实在没有g++编译器的还需要安装一下g++编译器
sudo apt-get install g++
到了这里其实就可以开始我们的代码之旅了
4、新建工程
项目名称和项目路径不能带有中文
基类一定要选择mainwindow因为我们待会儿会用到菜单栏这个功能,UI也最好创建一个可以更加直观的看见自己的界面效果
然后基本就是下一步下一步就好了
然后点击编译,基本就表示没有问题了
5、编辑菜单栏
然后我们来设计页面
首先添加一个文本编辑框,然后布局(要点击没有控件的地方再布局)
然后我们来添加菜单栏
然后我们ctrl+r试一下
有的小伙伴可能上方不会出现菜单栏,这是因为Ubuntu设置的原因我们需要设置一下,在系统设置中外观-行为
这样就可以解决没有菜单栏的问题了,下面开始编写我们的代码了
6、Qt文件操作
我们可以在这里先设置一下快捷键例如我们常见的ctrl+o打开文件ctrl+s保存文件,这个根据自己需求来,然后我们再右击他点击转为槽,信号选择默认的triggered就号好。
然后我们再.h文件中添加这三个头文件
#include <QMessageBox> #include <QFileDialog> #include <QTextStream>
槽函数转换完成在.h文件应该有以下声明(编译器自动生成的)
private slots: void on_actionnew_file_triggered(); void on_actionMe_triggered(); void on_actionopen_file_triggered(); void on_actionsave_file_triggered(); void on_actionsave_as_file_triggered();
然后开始编写我们的槽函数代码
6.1打开文件
/*** open file ***/ void MainWindow::on_actionopen_file_triggered() { filepath = file->getOpenFileName(this,"选择一个文本文件","./","*.txt *.c *.cpp *.h"); /* 打开文件 */ QFile fp(filepath); if( !fp.open(QIODevice::ReadWrite)) { QMessageBox box(QMessageBox::NoIcon,"提示","文件读取失败"); box.setStandardButtons (QMessageBox::Ok); box.setButtonText (QMessageBox::Ok,QString("确定")); box.exec(); }else { ui->textEdit->append(fp.readAll()); } }
6.2新建文件
/*** new file ***/ void MainWindow::on_actionnew_file_triggered() { QFileDialog fileDialog; QString fileName = fileDialog.getSaveFileName(this,"New File","./","*.txt *.c *.cpp *.h"); if(fileName == "") { return; } QFile file(fileName); if(!file.open(QIODevice::ReadWrite | QIODevice::Text)) { QMessageBox::warning(this,"error","new file error!"); return; } else { QTextStream outText(&file); QString str = ui->textEdit->toPlainText(); outText<<str; file.close(); } }
6.3保存文件
/*** save file ***/ void MainWindow::on_actionsave_file_triggered() { /* 打开文件 */ if(filepath.isNull()) { on_actionsave_as_file_triggered(); return; } else { QFile fp(filepath); if( !fp.open(QIODevice::ReadWrite)) { QMessageBox box(QMessageBox::NoIcon,"提示","文件读取失败"); box.setStandardButtons (QMessageBox::Ok); box.setButtonText (QMessageBox::Ok,QString("确定")); box.exec(); }else { QTextStream outText(&fp); QString str = ui->textEdit->toPlainText(); outText << str; } } }
7.4另存为
/*** save as file ***/ void MainWindow::on_actionsave_as_file_triggered() { QFileDialog fileDialog; filepath = fileDialog.getSaveFileName(this,"Save File name","./","*.txt *.c *.cpp *.h"); if(filepath == "") { return; } QFile file(filepath); if(!file.open(QIODevice::ReadWrite)) { QMessageBox::warning(this,"error","open file failure!"); return; } else { QTextStream outText(&file); QString str = ui->textEdit->toPlainText(); outText<<str; file.close(); } }
然后我们再添加一个about吧,这样显得专业一点
/*** about ***/ void MainWindow::on_actionMe_triggered() { QMessageBox box(QMessageBox::NoIcon,"About","Welcome to the text editor"); box.setStandardButtons (QMessageBox::Ok|QMessageBox::No); box.setButtonText(QMessageBox::Ok, QString("OK")); box.setButtonText(QMessageBox::No, QString("EXIT?")); if (box.exec() == QMessageBox::No) { this->close(); } }
然后我们CTRL+R运行看一下效果
效果不错,快捷键也可以正常使用,然后我们试一试qt的跨平台功能直接把工程放在windows上跑一下试试。
8、在windows运行
这里会提示切换kits,切换以下就好了,会提示的
运行是没有问题的,就是这个画面有点丑还是需要美化。
9、总结
本章主要完成了qt再Linux上的安装及新建工程的使用,还编写了第一个跨平台的应用notepad,知识点包含了菜单栏、qt文件操作。