继承QListWidgetItem

时间:2015-06-27 14:52:44

标签: c++ qt

我有一个QDialog,用于从SQL表中显示的项目列表中进行选择。选择项目后,我需要返回表格并阅读所选项目的所有数据。我想将SQL ID添加到WidgetItem。

我创建了一个继承自QListWidgetItem的类。我想要做的就是添加一个整数ID。我得到了与Meta Objects相关的各种编译错误。

以下是标题:

#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

这是来源&#34;

#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:开始:&#34; C:\ Qt \ Qt5.3.1 \ Tools \ QtCreator \ bin \ jom.exe&#34;

     

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&#34; .... \ SFML-2.1 \ include&#34; -I&#34; .... \ PROGRA〜2 \ Carmenta \卡门〜1 \包括&#34; -I&#34; .... \ Qt的\ Qt5.3.1 \ 5.3 \ msvc2010_opengl \包括&#34; -I&#34; .... \ Qt的\ Qt5.3.1 \ 5.3 \ msvc2010_opengl \包括\ QtMultimediaWidgets&#34; -I&#34; .... \ Qt的\ Qt5.3.1 \ 5.3 \ msvc2010_opengl \包括\ QtOpenGL&#34; -I&#34; .... \ Qt的\ Qt5.3.1 \ 5.3 \ msvc2010_opengl \包括\ QtMultimedia&#34; -I&#34; .... \ Qt的\ Qt5.3.1 \ 5.3 \ msvc2010_opengl \包括\ QtWidgets&#34; -I&#34; .... \ Qt的\ Qt5.3.1 \ 5.3 \ msvc2010_opengl \包括\ QtSerialPort&#34; -I&#34; .... \ Qt的\ Qt5.3.1 \ 5.3 \ msvc2010_opengl \包括\ QtSql&#34; -I&#34; .... \ Qt的\ Qt5.3.1 \ 5.3 \ msvc2010_opengl \包括\ QtNetwork&#34; -I&#34; .... \ Qt的\ Qt5.3.1 \ 5.3 \ msvc2010_opengl \包括\ QtGui&#34; -I&#34; .... \ Qt的\ Qt5.3.1 \ 5.3 \ msvc2010_opengl \包括\ QtCore&#34; -I&#34;调试&#34; -I&#34;&#34; -I&#34;&#34; -I&#34; .... \ Qt的\ Qt5.3.1 \ 5.3 \ msvc2010_opengl \ mkspecs \ Win32的msvc2010&#34; -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&#34; .... \ SFML-2.1 \ include&#34; -I&#34; .... \ PROGRA〜2 \ Carmenta \卡门〜1 \包括&#34; -I&#34; .... \ Qt的\ Qt5.3.1 \ 5.3 \ msvc2010_opengl \包括&#34; -I&#34; .... \ Qt的\ Qt5.3.1 \ 5.3 \ msvc2010_opengl \包括\ QtMultimediaWidgets&#34; -I&#34; .... \ Qt的\ Qt5.3.1 \ 5.3 \ msvc2010_opengl \包括\ QtOpenGL&#34; -I&#34; .... \ Qt的\ Qt5.3.1 \ 5.3 \ msvc2010_opengl \包括\ QtMultimedia&#34; -I&#34; .... \ Qt的\ Qt5.3.1 \ 5.3 \ msvc2010_opengl \包括\ QtWidgets&#34; -I&#34; .... \ Qt的\ Qt5.3.1 \ 5.3 \ msvc2010_opengl \包括\ QtSerialPort&#34; -I&#34; .... \ Qt的\ Qt5.3.1 \ 5.3 \ msvc2010_opengl \包括\ QtSql&#34; -I&#34; .... \ Qt的\ Qt5.3.1 \ 5.3 \ msvc2010_opengl \包括\ QtNetwork&#34; -I&#34; .... \ Qt的\ Qt5.3.1 \ 5.3 \ msvc2010_opengl \包括\ QtGui&#34; -I&#34; .... \ Qt的\ Qt5.3.1 \ 5.3 \ msvc2010_opengl \包括\ QtCore&#34; -I&#34;调试&#34; -I&#34;&#34; -I&#34;&#34; -I&#34; .... \ Qt的\ Qt5.3.1 \ 5.3 \ msvc2010_opengl \ mkspecs \ Win32的msvc2010&#34; -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&#34; ... \ SFML-2.1 \包括&# 34; -I&#34; .... \ PROGRA〜2 \ Carmenta \卡门〜1 \包括&#34; -I&#34; .... \ Qt的\ Qt5.3.1 \ 5.3 \ msvc2010_opengl \包括&#34; -I&#34; .... \ Qt的\ Qt5.3.1 \ 5.3 \ msvc2010_opengl \包括\ QtMultimediaWidgets&#34; -I&#34; .... \ Qt的\ Qt5.3.1 \ 5.3 \ msvc2010_opengl \包括\ QtOpenGL&#34; -I&#34; .... \ Qt的\ Qt5.3.1 \ 5.3 \ msvc2010_opengl \包括\ QtMultimedia&#34; -I&#34; .... \ Qt的\ Qt5.3.1 \ 5.3 \ msvc2010_opengl \包括\ QtWidgets&#34; -I&#34; .... \ Qt的\ Qt5.3.1 \ 5.3 \ msvc2010_opengl \包括\ QtSerialPort&#34; -I&#34; .... \ Qt的\ Qt5.3.1 \ 5.3 \ msvc2010_opengl \包括\ QtSql&#34; -I&#34; .... \ Qt的\ Qt5.3.1 \ 5.3 \ msvc2010_opengl \包括\ QtNetwork&#34; -I&#34; .... \ Qt的\ Qt5.3.1 \ 5.3 \ msvc2010_opengl \包括\ QtGui&#34; -I&#34; .... \ Qt的\ Qt5.3.1 \ 5.3 \ msvc2010_opengl \包括\ QtCore&#34; -I&#34;调试&#34; -I&#34;&#34; -I&#34;&#34; -I&#34; .... \ Qt的\ Qt5.3.1 \ 5.3 \ msvc2010_opengl \ mkspecs \ Win32的msvc2010&#34; -Fodebug \ @C:\ Users \ GLENNP~1 \ AppData \ Local \ Temp \ moc_mylistwidgetitem.obj.1304.390.jom

     

moc_mylistwidgetitem.cpp

     

debug \ moc_mylistwidgetitem.cpp(63):错误C2039:&#39; staticMetaObject&#39; :   不是&#39; QListWidgetItem&#39;

的成员
    c:\qt\qt5.3.1\5.3\msvc2010_opengl\include\qtwidgets\qlistwidget.h(61)
     

:查看&#39; QListWidgetItem&#39;的声明            jom:C:\ Qt-Testing \ LEAPv1.7.1 \ Makefile.Debug [debug \ moc_mylistwidgetitem.obj]错误2

     

debug \ moc_mylistwidgetitem.cpp(70):错误C2227:左边的   &#39; - &GT;元对象&#39;必须指向class / struct / union / generic类型

     

debug \ moc_mylistwidgetitem.cpp(70):错误C2227:左边的   &#39; - &GT; dynamicMetaObject&#39;必须指向class / struct / union / generic类型

     

debug \ moc_mylistwidgetitem.cpp(78):错误C2039:&#39; qt_metacast&#39; :是的   不是&#39; QListWidgetItem&#39;

的成员
    c:\qt\qt5.3.1\5.3\msvc2010_opengl\include\qtwidgets\qlistwidget.h(61)
     

:查看&#39; QListWidgetItem&#39;的声明            debug \ moc_mylistwidgetitem.cpp(83):错误C2039:&#39; qt_metacall&#39; :不是&#39; QListWidgetItem&#39;

的成员
    c:\qt\qt5.3.1\5.3\msvc2010_opengl\include\qtwidgets\qlistwidget.h(61)
     

:查看&#39; QListWidgetItem&#39;的声明            jom:C:\ Qt-Testing \ LEAPv1.7.1 \ Makefile [debug]错误2

     

10:43:38:进程&#34; C:\ Qt \ Qt5.3.1 \ Tools \ QtCreator \ bin \ jom.exe&#34;   退出代码2.

     

构建/部署项目LEAPv1.7.1时出错(工具包:桌面Qt 5.3   MSVC2010 OpenGL 32bit)执行步骤&#39; Make&#39;

     

10:43:38:经过的时间:00:03。

我不知道该怎么做。我只是想在课堂上添加一个整数,所以我不必在内部维护另一个表。显然我不明白我在这里做什么!

1 个答案:

答案 0 :(得分:6)

从班级中删除Q_OBJECT宏。您应该只在Q_OBJECT派生的类中使用QObjectQListWidgetItem并非来自QObject,因此MyListWidgetItem并非来自QObject