• 4875阅读
  • 2回复

关于Qt中使用全局变量的问题。 [复制链接]

上一主题 下一主题
离线sflute
 
只看楼主 正序阅读 楼主  发表于: 2007-03-14
— 本帖被 XChinux 执行加亮操作(2007-03-14) —
我正在做一个程序,要与后台数据库紧密相连,我想定义一个QSqlDatabase类型的全局指针,只需在程序开始时连接一次,以后在每个窗体中都不用重新连接,但是好像在使用这个全局变量时出了问题,我把程序进行了简化,只保留了关键的语句,清高手帮忙看一下,谢谢!

#include <qapplication.h>
#include <qsqldatabase.h>
QSqlDatabase *db_p;

bool ConnectDB( QSqlDatabase* db ){
    if (db->isOpen())
        return TRUE;
    if( !db->open() )
        return FALSE;
    return TRUE;
}

void initDB(){
    db_p = QSqlDatabase::addDatabase( "QMYSQL3" );
    db_p->setDatabaseName("powersky");
    db_p->setUserName("root");
    db_p->setPassword("root");
    db_p->setHostName("192.168.100.3");
}

int main( int argc, char ** argv )
{
    QApplication a( argc, argv );
    ...
  initDB();
  ConnectDB(db_p);  //这里出错了!
  ...
  return a.exec();
}

如果把initDB()函数的内容放到ConnectDB函数的开头,就不会出这问题,但是ConnectDB函数还要在别处调用,不能那样做,请问这是为什么?
离线sflute
只看该作者 2楼 发表于: 2007-03-15
好像是啊:
static QSqlDatabase* addDatabase( const QString& type, const QString& connectionName = defaultConnection );
离线zeki709

只看该作者 1楼 发表于: 2007-03-14
QSqlDatabase::addDatabase()函数返回的不是指针
快速回复
限100 字节
 
上一个 下一个