【发布时间】:2015-09-14 09:37:24
【问题描述】:
我有一个 QDialog,用于从 SQL 表中显示的项目列表中进行选择。选择一个项目后,我需要返回表格并读取所选项目的所有数据。我想将 SQL ID 添加到 WidgetItem。
我创建了一个继承自 QListWidgetItem 的类。我要做的就是添加一个整数 ID。我收到各种与元对象相关的编译错误。
这是标题:
#ifndef MYLISTWIDGETITEM_H
#define MYLISTWIDGETITEM_H
#include <QListWidget>
#include <QListWidgetItem>
class MyListWidgetItem : public QListWidgetItem
{
Q_OBJECT
public:
explicit MyListWidgetItem(QListWidget *parent = 0);
explicit MyListWidgetItem(QString content, QListWidget *parent = 0);
~MyListWidgetItem();
int getSqlTblEntryKey() const;
void setSqlTblEntryKey(int);
private:
int sqlTblEntryKey;
};
#endif // MYLISTWIDGETITEM_H
这就是源”
#include "mylistwidgetitem.h"
MyListWidgetItem::MyListWidgetItem(QListWidget *parent) :
QListWidgetItem(parent)
{
}
MyListWidgetItem::MyListWidgetItem(QString content, QListWidget *parent) :
QListWidgetItem(content, parent)
{
}
MyListWidgetItem::~MyListWidgetItem()
{
}
int MyListWidgetItem::getSqlTblEntryKey() const
{
return sqlTblEntryKey;
}
void MyListWidgetItem::setSqlTblEntryKey(int value)
{
sqlTblEntryKey = value;
}
我收到以下错误:
10:43:35:项目 LEAPv1.7.1 的运行步骤...
10:43:35:配置不变,跳过 qmake 步骤。
10:43:35:开始:“C:\Qt\Qt5.3.1\Tools\QtCreator\bin\jom.exe”
C:\Qt\Qt5.3.1\Tools\QtCreator\bin\jom.exe -f Makefile.Debug CL -c -nologo -Zm200 -Zc:wchar_t的-ZI -MDd -GR-W3 -w34100 -w34189 -EHsc /Fddebug\LEAPV1.7.1.pdb -DUNICODE -DWIN32 -DQT_YES_DEBUG_OUTPUT -DQT_MULTIMEDIAWIDGETS_LIB -DQT_OPENGL_LIB -DQT_MULTIMEDIA_LIB -DQT_WIDGETS_LIB -DQT_SERIALPORT_LIB - DQT_SQL_LIB -DQT_NETWORK_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I"....\SFML-2.1\include"-I"....\Progra~2\Carmenta\Carmen~1\include"-I"....\Qt \Qt5.3.1\5.3\msvc2010_opengl\include"-I"....\Qt\Qt5.3.1\5.3\msvc2010_opengl\include\QtMultimediaWidgets"-I"....\Qt\Qt5.3.1\5.3\msvc2010_opengl \include\QtOpenGL" -I"....\Qt\Qt5.3.1\5.3\msvc2010_opengl\include\QtMultimedia" -I"....\Qt\Qt5.3.1\5.3\msvc2010_opengl\include\QtWidgets" -我"....\Qt\Qt5.3.1\5.3\msvc2010_opengl\include\QtSerialPort"-I"....\Qt\Qt5.3.1\5.3\msvc2010_opengl\include\QtSql"-I".... \Qt\Qt5.3.1\5.3\msvc2010_opengl\include\QtNetwork" -I"....\Qt\Qt5.3.1\5.3\msvc2010_opengl\include\QtGui" -I"....\Qt\Qt5.3.1 \5.3\msvc2010_opengl\include\QtCore"-I"调试"-I"。" -一世”。” -I"....\Qt\Qt5.3.1\5.3\msvc2010_opengl\mkspecs\win32-msvc2010" -Fodebug\@C:\Users\GLENNP~1\AppData\Local\Temp\mylistwidgetitem.obj.1304.109.jom
mylistwidgetitem.cpp
C:\Qt\Qt5.3.1\5.3\msvc2010_opengl\bin\moc.exe -DUNICODE -DWIN32 -DQT_YES_DEBUG_OUTPUT -DQT_MULTIMEDIAWIDGETS_LIB -DQT_OPENGL_LIB -DQT_MULTIMEDIA_LIB -DQT_WIDGETS_LIB -DQT_SERIALPORT_LIB -DQT_SQL_LIB -DQT_NETWORK_LIB -DQT_GUI_LIB -DQT_CORE_LIB -D_MSC_VER = 1600 -D_WIN32 -IC:/Qt/Qt5.3.1/5.3/msvc2010_opengl/mkspecs/win32-msvc2010 -IC:/ QT -Projects/LEAP/LEAPv1.7.1 -IC:/SFML-2.1/include -IC:/Progra~2/Carmenta/Carmen~1/include -IC:/Qt/Qt5.3.1/5.3/msvc2010_opengl/include -IC: /Qt/Qt5.3.1/5.3/msvc2010_opengl/include/QtMultimediaWidgets -IC:/Qt/Qt5.3.1/5.3/msvc2010_opengl/include/QtOpenGL -IC:/Qt/Qt5.3.1/5.3/msvc2010_opengl/include/QtMultimedia -IC :/Qt/Qt5.3.1/5.3/msvc2010_opengl/include/QtWidgets -IC:/Qt/Qt5.3.1/5.3/msvc2010_opengl/include/QtSerialPort -IC:/Qt/Qt5.3.1/5.3/msvc2010_opengl/include/QtSql - IC:/Qt/Qt5.3.1/5.3/msvc2010_opengl/include/QtNetwork -IC:/Qt/Qt5.3.1/5.3/msvc2010_opengl/include/QtGui -IC:/Qt/Qt5.3.1/5.3/msvc2010_opengl/include/QtCore -一世。 ....\Qt-Projects\LEAP\LEAPv1.7.1\mylistwidgetitem.h -o 调试\moc_mylistwidgetitem.cpp CL -c -nologo -Zm200 -Zc:wchar_t的-ZI -MDd -GR-W3 -w34100 -w34189 -EHsc /Fddebug\LEAPV1.7.1.pdb -DUNICODE -DWIN32 -DQT_YES_DEBUG_OUTPUT -DQT_MULTIMEDIAWIDGETS_LIB -DQT_OPENGL_LIB -DQT_MULTIMEDIA_LIB -DQT_WIDGETS_LIB -DQT_SERIALPORT_LIB - DQT_SQL_LIB -DQT_NETWORK_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I"....\SFML-2.1\include"-I"....\Progra~2\Carmenta\Carmen~1\include"-I"....\Qt \Qt5.3.1\5.3\msvc2010_opengl\include"-I"....\Qt\Qt5.3.1\5.3\msvc2010_opengl\include\QtMultimediaWidgets"-I"....\Qt\Qt5.3.1\5.3\msvc2010_opengl \include\QtOpenGL" -I"....\Qt\Qt5.3.1\5.3\msvc2010_opengl\include\QtMultimedia" -I"....\Qt\Qt5.3.1\5.3\msvc2010_opengl\include\QtWidgets" -我"....\Qt\Qt5.3.1\5.3\msvc2010_opengl\include\QtSerialPort"-I"....\Qt\Qt5.3.1\5.3\msvc2010_opengl\include\QtSql"-I".... \Qt\Qt5.3.1\5.3\msvc2010_opengl\include\QtNetwork" -I"....\Qt\Qt5.3.1\5.3\msvc2010_opengl\include\QtGui" -I"....\Qt\Qt5.3.1 \5.3\msvc2010_opengl\include\QtCore"-I"调试"-I"。" -一世”。” -I"....\Qt\Qt5.3.1\5.3\msvc2010_opengl\mkspecs\win32-msvc2010" -Fodebug\@C:\Users\GLENNP~1\AppData\Local\Temp\addressdialog.obj.1304.125.jom
addressdialog.cpp
cl -c -nologo -Zm200 -Zc:wchar_t -Zi -MDd -GR -W3 -w34100 -w34189 -EHsc /Fddebug\LEAPV1.7.1.pdb -DUNICODE -DWIN32 -DQT_YES_DEBUG_OUTPUT -DQT_MULTIMEDIAWIDGETS_LIB -DQT_OPENGL_LIB -DQT_MULTIMEDIA_LIB -DQT_WIDGETS_LIB -DQT_SERIALPORT_LIB -DQT_SQL_LIB -DQT_NETWORK_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I “.... \ SFML-2.1 \包括” -I "....\Progra~2\Carmenta\Carmen~1\include"-I"....\Qt\Qt5.3.1\5.3\msvc2010_opengl\include"-I"....\Qt\Qt5. 3.1\5.3\msvc2010_opengl\include\QtMultimediaWidgets"-I"....\Qt\Qt5.3.1\5.3\msvc2010_opengl\include\QtOpenGL"-I"....\Qt\Qt5.3.1\5.3\msvc2010_opengl\包括\QtMultimedia"-I"....\Qt\Qt5.3.1\5.3\msvc2010_opengl\include\QtWidgets"-I"....\Qt\Qt5.3.1\5.3\msvc2010_opengl\include\QtSerialPort"-I "....\Qt\Qt5.3.1\5.3\msvc2010_opengl\include\QtSql" -I"....\Qt\Qt5.3.1\5.3\msvc2010_opengl\include\QtNetwork" -I"....\ Qt\Qt5.3.1\5.3\msvc2010_opengl\include\QtGui"-I"....\Qt\Qt5.3.1\5.3\msvc2010_opengl\include\QtCore"-I"调试"-I"。" -一世”。” -I"....\Qt\Qt5.3.1\5.3\msvc2010_opengl\mkspecs\win32-msvc2010" -Fodebug\@C:\Users\GLENNP~1\AppData\Local\Temp\moc_mylistwidgetitem.obj.1304.390.jom
moc_mylistwidgetitem.cpp
debug\moc_mylistwidgetitem.cpp(63):错误 C2039:'staticMetaObject': 不是“QListWidgetItem”的成员
c:\qt\qt5.3.1\5.3\msvc2010_opengl\include\qtwidgets\qlistwidget.h(61):参见“QListWidgetItem”的声明 jom: C:\Qt-Testing\LEAPv1.7.1\Makefile.Debug [debug\moc_mylistwidgetitem.obj] 错误2
debug\moc_mylistwidgetitem.cpp(70) : error C2227: left of '->metaObject' 必须指向类/结构/联合/通用类型
debug\moc_mylistwidgetitem.cpp(70) : error C2227: left of '->dynamicMetaObject' 必须指向类/结构/联合/通用类型
debug\moc_mylistwidgetitem.cpp(78):错误 C2039:'qt_metacast':是 不是“QListWidgetItem”的成员
c:\qt\qt5.3.1\5.3\msvc2010_opengl\include\qtwidgets\qlistwidget.h(61):参见“QListWidgetItem”的声明 debug\moc_mylistwidgetitem.cpp(83) : error C2039: 'qt_metacall' : is not a member of 'QListWidgetItem'
c:\qt\qt5.3.1\5.3\msvc2010_opengl\include\qtwidgets\qlistwidget.h(61):参见“QListWidgetItem”的声明 jom: C:\Qt-Testing\LEAPv1.7.1\Makefile [调试] 错误 2
10:43:38:进程“C:\Qt\Qt5.3.1\Tools\QtCreator\bin\jom.exe” 以代码 2 退出。
构建/部署项目 LEAPv1.7.1 时出错(套件:桌面 Qt 5.3 MSVC2010 OpenGL 32bit) 执行步骤'Make'时
10:43:38:经过时间:00:03。
我不知道该怎么做。我只想在类中添加一个整数,这样我就不必在内部维护另一个表。显然我不明白我在这里做什么!
【问题讨论】: