這裡寫目錄标題
- 1、下載下傳
- 2、安裝
- 3、安裝lib庫
- 4、建立工程
- 5、編輯菜單欄
- 6、Qt檔案操作
-
- 6.1打開檔案
- 6.2建立檔案
- 6.3儲存檔案
- 7.4另存為
- 8、在windows運作
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檔案操作。