要支持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();
}
//