• 5540阅读
  • 5回复

求助:各位大侠,帮忙看看这小段程序有什么问题?(已解决) [复制链接]

上一主题 下一主题
离线xcykkk
 
只看楼主 倒序阅读 楼主  发表于: 2009-03-26
— 本帖被 XChinux 执行加亮操作(2009-04-18) —
#include <QtGui>
#include <QLabel>
#include <QPushButton>
#include <QApplication>

class Asdf : public QObject
{
    Q_OBJECT
public:
    QLabel *label;
    Asdf();
    ~Asdf();
public slots:
    void Open_Label();
};

Asdf::Asdf()
{
    label = new QLabel("Hello !");
}
Asdf::~Asdf()
{
    delete label;
}
void Asdf::Open_Label()
{
    label->show();
}

int main(int argc,char* argv[])
{
    QApplication app(argc,argv);
    QPushButton *pushButton = new QPushButton("Open");
    Asdf *asdf = new Asdf();
    Asdf::connect(pushButton,SIGNAL(clicked()),asdf,SLOT(Open_Label()));
    pushButton->show();
    return app.exec();
}
[ 此帖被xcykkk在2009-04-16 12:55重新编辑 ]
离线xcykkk
只看该作者 1楼 发表于: 2009-03-26
main.obj : error LNK2001: 无法解析的外部符号 "public: virtual struct QMetaObject const * __thiscall Asdf::metaObject(void)const " (?metaObject@Asdf@@UBEPBUQMetaObject@@XZ)
1>main.obj : error LNK2001: 无法解析的外部符号 "public: virtual void * __thiscall Asdf::qt_metacast(char const *)" (?qt_metacast@Asdf@@UAEPAXPBD@Z)
1>main.obj : error LNK2001: 无法解析的外部符号 "public: virtual int __thiscall Asdf::qt_metacall(enum QMetaObject::Call,int,void * *)" (?qt_metacall@Asdf@@UAEHW4Call@QMetaObject@@HPAPAX@Z)
1>C:\Documents and Settings\Administrator\桌面\n\Debug\n.exe : fatal error LNK1120: 3 个无法解析的外部命令
离线浪漫天使
只看该作者 2楼 发表于: 2009-03-26
分开写,
把该放头文件的东西放到头文件,moc时候要用到头文件。
把实现的东西放到cpp里面
离线reclusun
只看该作者 3楼 发表于: 2009-03-27
Asdf::connect(pushButton,SIGNAL(clicked()),asdf,SLOT(Open_Label()));
改成 QObject::connect(pushButton,SIGNAL(clicked()),asdf,SLOT(Open_Label()));
离线xcykkk
只看该作者 4楼 发表于: 2009-04-13
谢谢,各位了~~~
原来这个问题是这么个情况:

Q_OBJECT不能出现在编译单元,也就是.cpp文件中
离线iptton

只看该作者 5楼 发表于: 2009-04-17
可以出现。。添加一句: #include "main.moc" 应该可以了
[url] http://www.alloyteam.com/2012/05/web-front-end-tool-rythem-1/ [url]
快速回复
限100 字节
 
上一个 下一个