Mac 平臺下裝qt環境想對比較簡單,在官網上下載qt的環境包,註冊一個免費的賬號,然後直接開始setup,中途可以選裝iOS和安卓平臺等等。安裝完成後,可以在目錄下找到qt creator.app 直接拖到Applications裏面就可以開始qt編程了;
UI界面有點iOS和wpf的影子,需要時間來熟悉和適應,使用沒什麼大問題;
再一個就是槽和信號機制,暫時不關注;
下面主要記錄下Mac平臺qt的sql驅動裝載。
ui->setupUi(this);
qDebug() << QSqlDatabase::drivers();//打印qt支持的數據庫類型
setWindowTitle("SQL");//設置窗口的標題
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("127.0.0.1");
db.setDatabaseName("dbforqt");
db.setUserName("root");
bool ret = db.open();
if(!ret) //如果數據庫打開失敗,會彈出一個警告窗口
{
QMessageBox::warning(this, "警告", "數據庫打開失敗");
qDebug()<<db.lastError();
}
else
{
ui->textEdit->setText("數據庫打開成功");
}
這段代碼運行後,出現錯誤提示:QMYSQL driver not loaded
百度是指望不上的,數據太難搜索,基本都是垃圾,通過關鍵詞把你吸引進來,一看並沒什麼用;
在結合一篇博客和qt官網的教程,需要直接編譯相關的driver lib,Windows下的教程很多,Mac卻沒幾個(再次顯示關鍵詞搜索的重要性)
//setep 1:
cd $QTDIR/Src/qtbase/src/plugins/sqldrivers
qmake -- MYSQL_PREFIX=/usr/local/mysql #這裏的qmake要使用qt自帶的
//step 2:
make sub-mysql
//step 3:
qmake
//step 4:
make install
//step 5:
cd $QTDIR/clang_64/plugins/sqldriver
otool -L libqsqlmysql.dylib
//step 6:
install_name_tool -change /opt/local/lib/mysql55/mysql/libmysqlclient.18.dylib /usr/local/Cellar/mysql/8.0.19/lib/libmysqlclient.21.dylib libqsqlmysql.dylib
注意:QTDIR爲Mac上安裝qt的目錄,這裏縮寫指代
在剛剛安裝完qt的時候,使用qmake會出現錯誤如下:
zsh: command not found: qmake
同樣,網上一大堆,都是說環境變量沒配好,但是解決方法又是基本沒一個能說清楚的(我搜索的結果)
//打開terminal
sudo vi ~/.bash_profile
//按i進入編輯模式
//輸入
export QTDIR=/Users/channe/Qt5.14.1/5.14.1/clang_64
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$QTDIR/lib
export PATH=$PATH:$QTDIR/bin
//QTDIR爲電腦上qt安裝目錄下的clang_64文件加路徑
//esc,然後輸入冒號,輸入wq保存並退出
source ~/.bash_profile//是文件生效
qmake -v //查看qmake版本,如果出現版本則基本證明配置成功了沒問題
qmake問題解決~
step 6 中的路徑需要注意幾點,install_name_tool -change /opt/local/lib/mysql55/mysql/libmysqlclient.18.dylib /usr/local/Cellar/mysql/8.0.19/lib/libmysqlclient.21.dylib libqsqlmysql.dylib
step5 之後在qt的安裝目錄下,我的目錄是(/Users/channe/Qt5.14.1/5.14.1/clang_64/plugins/sqldrivers)應該會生成libqsqlmysql.dylib,綠色目錄是本地mysql的安裝路徑,我是用brew安裝的,所以在/usr/local/Cellar下
至此~Mac平臺的qt數據庫驅動安裝成功
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("127.0.0.1");
db.setDatabaseName("dbforqt");
db.setUserName("root");
bool ret = db.open();
這段代碼要注意,database要自己去創建,要麼用sql客戶端,要麼命令行,我是用命令行創建”dbforqt“這個數據庫,所以才能連上,很多地方只上了代碼,根本沒有說數據庫需要自己創建,最開始還以爲是直接創建。
最後run一下代碼,open成功~