请将我视为Qt中的新生。我为按钮单击事件编写了以下代码。
void dbCheck ()
{
db = QSqlDatabase::addDatabase("QSQLITE");
QString dbPath(QDir::home().path());
dbPath.append("/Desktop/jk/sample.sqlite");
qDebug () <<"Path Name is "<<dbPath;
.......
}
过了一段时间,我把下面这行改成了
dbPath.append("/Desktop/jk/Newsample.sqlite");
当我运行代码时,它仍然打印之前的路径,即sample.sqlite
。
我清理了项目,并重建了相同的,但没有使用,我仍然得到相同的结果。真的奇怪。
我错过什么了吗?我该如何解决这个问题?和缓存有关吗?请建议。
小心混合源内构建和"影子构建"。如果您进入源目录,并运行qmake
和make
,您将获得源内构建。另一方面,Qt Creator默认使用单独的构建目录,也就是"影子构建",当然你也可以自己这么做。在实践中,这是通过qmake
创建构建目录为源目录的兄弟来完成的,到那里并执行qmake ../myproject
在影子构建目录中生成makefile。
如果是这个问题,下面的应该有所帮助:
在Qt SDK命令提示符下转到源代码目录,并运行
make clean distclean
注意:顺序很重要,distclean
也会删除任何makefile,所以必须最后做。也替换make
与nmake
或mingw32-make
或任何你实际使用。如果该命令没有找到makefile,那么您可能没有在那里运行qmake
,并且问题是其他的,但是您可以通过运行qmake
来生成makefile来验证这一点,并且make clean distclean
将工作。
如果您使用版本控制(并且没有意外签入生成的文件…),则可以使用版本控制工具从版本控制目录中删除所有额外的文件。
请重新检查您的环境:您真的清除了所有吗?确保没有以前版本中的*.o
、moc_*.cpp
、ui_*.h
。尝试删除.user
文件并重新配置您的项目以使构建到不同的文件夹。
也可以这样使用字符串的连接:
QString dbPath = QString("%1%2")
.arg( QDir::home().path() )
.arg( "/Desktop/jk/Newsample.sqlite" ) );
Offtop,但不要忘记本地分隔符 (http://qt-project.org/doc/qt-4.8/qdir.html#separator和http://qt-project.org/doc/qt-4.8/qdir.html#toNativeSeparators) -如果您编写跨平台软件