Qt 101:为啥我不能使用这个类?
Posted
技术标签:
【中文标题】Qt 101:为啥我不能使用这个类?【英文标题】:Qt 101: Why can't I use this class?Qt 101:为什么我不能使用这个类? 【发布时间】:2010-06-10 03:20:24 【问题描述】:我有使用 C++ 的经验,但我以前从未真正使用过 Qt。我正在尝试连接到 SQLite 数据库,所以我找到了一个教程 here 并继续使用它。在 QtCreator IDE 中,我转到 Add New --> C++ Class 并在头文件中粘贴来自该链接的头文件,并在 .cpp 文件中粘贴源代码。我的 main.cpp 看起来像这样:
#include <QtGui/QApplication>
#include "mainwindow.h"
#include "databasemanager.h"
#include <qlabel.h>
int main(int argc, char *argv[])
QApplication a(argc, argv);
MainWindow w;
w.show();
DatabaseManager db();
QLabel hello("nothing...");
if(db.openDB()) // Line 13
hello.setText("Win!");
else
hello.setText("Lame!");
hello.resize(100, 30);
hello.show();
return a.exec();
我收到了这个错误:
main.cpp:13: error: request for member 'openDB' in 'db', which is of non-class type 'DatabaseManager()'
谁能指出我正确的方向?我知道“复制粘贴”代码不好,我只是想看看我是否可以让数据库连接正常工作,我认为这样的事情会很简单......感谢您的帮助。
【问题讨论】:
【参考方案1】:将 DatabaseManager 行更改为:
DatabaseManager db;
您正在声明一个名为 db
的本地函数,它不接受任何参数,并在您提供 ()
时返回一个 DatabaseManager
对象;
【讨论】:
之前尝试过,结果是:main.cpp:11: undefined reference to `DatabaseManager::DatabaseManager(QObject*)' 这看起来像一个链接错误。确保您在 QT 库中进行链接。 它不是链接错误,它表示没有为这些参数定义构造函数。 对不起,在 QT 库中链接到底是什么意思?我已将我的头文件包含在 main.cpp 中。我必须在 QtCreator 中做一些特别的事情来链接吗?我只是在做 Build All。 太好了,在我的源文件中添加构造函数和析构函数修复了错误。有其他逻辑问题(它认为它正在打开数据库,但数据库不存在......)但我会自己解决这个问题。谢谢大家!以上是关于Qt 101:为啥我不能使用这个类?的主要内容,如果未能解决你的问题,请参考以下文章
为啥我不能使用 Qt 中的 QXmlStreamReader 解析 XML 文件?
为啥我可以在 stricmp() 中使用 char 但不能使用字符串?