Q_OBJECT for 信号和槽

 

要支持SIGNAL 和SLOT,必须在类的最前面("{" 下面) 加上 Q_OBJECT ,不然会出现 '''"无法解析的外部符号'QMetaObject'"''' 的链接错误。

class SearchBox : public QDialog
{
 Q_OBJECT
public:
 SearchBox(QWidget *parent = 0);
...

};


VS2008中, 工具 ->选项 ->VC++ 目录 ->右边选可执行文件G:/Qt-Win-4.6.2/bin

解决方案资源管理器 ->右击SearchBox.h  ->自定义生成步骤 -> 命令行

输入moc ./src/SearchBox.h -o ./src/moc_SearchBox.cpp

 

解决方案资源管理器 ->右击SearchBox.h  ->自定义生成步骤 -> 输出  这里填./src/moc_SearchBox.cpp


F7编译 -> 将src 目录中生成的文件moc_SearchBox.cpp 加入工程 ->F7 重新编译


//
// SearchBox.h
#ifndef SearchBox_H
#define SearchBox_H

#include <QDialog>

class QLabel;
class QLineEdit;
class QHBoxLayout;
class QVBoxLayout;
class QPushButton;
class QCheckBox;

class SearchBox : public QDialog
{
 Q_OBJECT
public:
 SearchBox();

private:
 QLabel *label;
 QLineEdit *lineEdit;
 QHBoxLayout *layout;
 QHBoxLayout *mainLayout;
 QVBoxLayout *leftLayout;
 QVBoxLayout *rightLayout;
};

#endif

//


//
// SearchBox.h
#include "SearchBox.h"

#include <QLabel>
#include <QBoxLayout>

SearchBox::SearchBox()
{
       // 随便设置一个部局后窗体就不会显示得超大
       mainLayout = new QHBoxLayout();
       setLayout(mainLayout);
}
//


//
// main.cpp
#include <QApplication>
#include "SearchBox.h"

#pragma comment(lib, "QtCore4.lib")
#pragma comment(lib, "QtGui4.lib")

int main(int argc, char **argv)
{
 QApplication *app = new QApplication(argc, argv);
 
 SearchBox *search_box = new SearchBox();
 search_box->show();

 app->exec();
}

//

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值