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在linux中编程

为啥我不能使用 Qt 中的 QXmlStreamReader 解析 XML 文件?

为啥我不能拥有带有此签名的 Q_PROPERTY?

为啥我可以在 stricmp() 中使用 char 但不能使用字符串?

为啥qt webengine不能播放youtube直播视频流

为啥我不能在 python 中访问这个类成员?