请认为我是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
。
我清理了项目,重建了同样但没有用,但我得到了相同的结果。真的很奇怪。
我在这里错过了什么吗?我该如何纠正这个问题?与缓存有关的任何事情?请建议。
答案 0 :(得分:1)
注意混合源内构建和“影子构建”。如果您转到源目录,则会获得源代码内部版本,并运行qmake
和make
。另一方面,Qt Creator默认使用单独的构建目录,AKA“影子构建”,你当然也可以自己做。在实践中,这是通过创建构建目录作为源目录的兄弟来完成的qmake
,然后执行qmake ../myproject
以在阴影构建目录中生成makefile。
现在的问题是, make 程序并没有真正具有单独构建目录的概念,如果您已经执行了源代码构建,那么 make < make < / em>也是。然后,当您认为正在进行阴影构建时, make 会在源目录下找到这些构建的文件并使用它们而不是创建新文件。
如果出现问题,以下应该有帮助:
在Qt SDK命令提示符下转到源目录,然后运行
make clean distclean
注意:顺序很重要,distclean
也会删除任何makefile,所以必须在最后完成。同时将make
替换为nmake
或mingw32-make
或您实际使用的任何内容。如果该命令没有找到makefile,那么你可能没有在那里运行qmake
而问题是其他问题,但你可以通过运行qmake
生成makefile来验证这一点,并make clean distclean
会工作的。
删除额外文件的替代方法,如果您使用版本控制(并且没有意外检入生成的文件...),则使用版本控制工具从版本控制目录中删除所有额外文件。
答案 1 :(得分:0)
请重新检查一下你的环境:你真的清除了所有环境吗?确保您之前的版本中没有*.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) - 如果您编写跨平台软件。