No puede encontrar la ranura de dejar de fumar y usar Q_Object Macro
-
26-10-2019 - |
Pregunta
Estoy usando VS2008 con QT 4.7.1 y complementos. Soy nuevo en este entorno.
Me las arreglé para hacer la configuración necesaria y ejecutar "Hola mundo". Pero cuando trato de usar simplequit()
Ranura al hacer clic en un botón, fallé. También resulta en la compilación falló al intentar usar Q_OBJECT
.
Después de comentar Q_OBJECT
El código se crea y depurará. Ahora se muestra
Qobject :: Connect: no hay tal tragamonedas qwidget :: quit () in. Main.cpp encontrado.
A continuación se muestra mi código
#include <QtGui>
#include "QtGui\QApplication"
#include "QObject"
class Notepad : public QWidget
{
//Q_OBJECT
public:
Notepad();
private slots:
void quit();
private:
QTextEdit *textEdit;
QPushButton *quitButton;
};
Notepad::Notepad()
{
textEdit = new QTextEdit;
quitButton = new QPushButton(tr("Quit"));
connect(quitButton, SIGNAL(clicked()), this, SLOT(quit() ));
QVBoxLayout *layout = new QVBoxLayout;
layout->addWidget(textEdit);
layout->addWidget(quitButton);
setLayout(layout);
setWindowTitle(tr("Notepad"));
}
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Notepad nt;// = new Notepad();
nt.show();
return a.exec();
}
He buscado a través de la red pero no pude obtener una solución razonable. La mayor parte de la solución es para trabajar con Qmake en la línea de comandos. También puedo encontrar el archivo .pro para el proyecto.
Se agradece cualquier ayuda.
Solución
NITESH: Necesita la macro Q_Object para que las ranuras funcionen correctamente, el MOC compila cada encabezado que contiene Q_Object en MOC_*archivo .cpp. Agrega ese MOC*.cpp a su proyecto y todo debería funcionar bien. El externo no resuelto significa que le falta la definición de la función, ¿la definió en cualquier lugar?
Otros consejos
Mueva la Declaración de Bloc de notas a un encabezado (por ejemplo, Notepad.h), reenable el Q_Object, luego agregue a su archivo .pro:
HEADERS += notepad.h
Rerún Qmake, entonces debería funcionar.