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成功~