Pregunta

El uso de Qt Creator, estoy creando una clase con ranuras personalizados en Qt:


class CustomEdit : public QTextEdit
{
    Q_OBJECT

public:
    CustomEdit(QWidget* parent);

public slots:
    void onTextChanged ();
};

Sin embargo, estoy recibiendo este error de vinculador:

undefined reference to 'vtable for CustomEdit'

La documentación dice:

  

Si se producen errores de compilación en la línea de "referencia indefinida a vtable para LcdNumber", es probable que haya olvidado para ejecutar la moc o para incluir la salida moc en el comando de enlace.

... pero no es obvio lo que esto significa.

¿Hay algo que tengo que añadir a mi clase, o al archivo .pro?

Editar - Aquí está mi archivo .pro:

QT += network \
    script \
    webkit \
    xml
TARGET = MyApp
TEMPLATE = app
SOURCES += main.cpp \
    MainWindow.cpp \
    CustomEdit.cpp 
HEADERS += MainWindow.h \
    CustomEdit.h
FORMS += mainwindow.ui

EDIT:

Esta pregunta se refiere a la mismos problemas, pero las respuestas no dejar claro cómo puedo solucionar este problema en Qt Creator. ¿Es necesario añadir explícitamente el archivo .cpp generados moc-a mi lista de ficheros a fusionar? Eso parece como un dolor.

¿Fue útil?

Solución

Qt Creator es un IDE que se utiliza para crear sus proyectos de Qt. Eso es todo. Pero qmake le permite BUID el proyecto. De qmake manual de ,

qmake automatiza la generación de Makefile de manera que se necesitan sólo unas pocas líneas de información para crear cada Makefile. qmake genera un Makefile en base a la información en un archivo de proyecto. qmake contiene características adicionales para apoyar el desarrollo con Qt, incluyendo automáticamente reglas de generación para moc y UIC.

don que incluir sus archivos moc separado, pero hay que ejecutar qmake que contiene toda la información sobre los archivos requeridos moc. Echar un vistazo a la Makefile.debug generada o Makefile.release después qmake y se pueden encontrar todos los archivos moc se incluirán para usted.

Ahora se ejecute qmake en Qt Creator, sólo tiene que ir a Build->RebuildAll que se desarrollará el qmake y todos los archivos (MOC) se generarán y vinculadas (en Makefile.debug) también.

Esperamos que esto elimate su referencia indefinida.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top