alphazero
14th December 2010, 17:25
Dear All,
When I want to compile below script, it shown error like this :
toggle/main.cpp:26: error: undefined reference to `vtable for toggle'
line 26 : toggle::toggle( QWidget *parent ) : QDialog( parent )
and here compile output
/media/DATA/Qt/toggle/main.cpp:26: undefined reference to `vtable for toggle'
/media/DATA/Qt/toggle/main.cpp:26: undefined reference to `vtable for toggle'
/media/DATA/Qt/toggle/main.cpp:26: undefined reference to `vtable for toggle'
/media/DATA/Qt/toggle/main.cpp:26: undefined reference to `vtable for toggle'
collect2: ld returned 1 exit status
make: Leaving directory `/media/DATA/Qt/toggle'
make: *** [toggle] Error 1
The process "/usr/bin/make" exited with code %2.
Error while building project toggle (target: Desktop)
When executing build step 'Make'
Can I compile script w/o .h file ? If I can, how to solve below problem ?
Thanks
alphazero
File :
toggle.pro
#-------------------------------------------------
#
# Project created by QtCreator 2010-12-14T21:46:25
#
#-------------------------------------------------
QT += gui
TARGET = toggle
CONFIG += app_bundle
TEMPLATE = app
SOURCES += main.cpp
toggle.cpp
#include <QtGui/QApplication>
#include <QDialog>
#include <QWidget>
#include <QPushButton>
#include <QHBoxLayout>
#include <QMessageBox>
class QPushButton;
class toggle : public QDialog
{
Q_OBJECT;
public:
toggle( QWidget *parent=0 );
private slots:
void buttonClicked();
void buttonToggled();
private:
QPushButton *clickButton;
QPushButton *toggleButton;
};
toggle::toggle( QWidget *parent ) : QDialog( parent )
{
clickButton = new QPushButton( "Click me!", this );
toggleButton = new QPushButton( "Toggle me!", this );
toggleButton->setCheckable( true );
QHBoxLayout *layout = new QHBoxLayout( this );
layout->addWidget( clickButton );
layout->addWidget( toggleButton );
connect( clickButton, SIGNAL(clicked()), this, SLOT(buttonClicked()) );
connect( toggleButton, SIGNAL(clicked()), this, SLOT(buttonToggled()) );
};
void toggle::buttonClicked()
{
QMessageBox::information( this, "Clicked!", "The button was clicked!" );
};
void toggle::buttonToggled()
{
QMessageBox::information( this, "Toggled!", QString("The button is %1!").arg(toggleButton->isChecked()?"pressed":"released") );
}
int main( int argc, char **argv )
{
QApplication app( argc, argv );
toggle *dlg = new toggle();
dlg->show();
return app.exec();
}
When I want to compile below script, it shown error like this :
toggle/main.cpp:26: error: undefined reference to `vtable for toggle'
line 26 : toggle::toggle( QWidget *parent ) : QDialog( parent )
and here compile output
/media/DATA/Qt/toggle/main.cpp:26: undefined reference to `vtable for toggle'
/media/DATA/Qt/toggle/main.cpp:26: undefined reference to `vtable for toggle'
/media/DATA/Qt/toggle/main.cpp:26: undefined reference to `vtable for toggle'
/media/DATA/Qt/toggle/main.cpp:26: undefined reference to `vtable for toggle'
collect2: ld returned 1 exit status
make: Leaving directory `/media/DATA/Qt/toggle'
make: *** [toggle] Error 1
The process "/usr/bin/make" exited with code %2.
Error while building project toggle (target: Desktop)
When executing build step 'Make'
Can I compile script w/o .h file ? If I can, how to solve below problem ?
Thanks
alphazero
File :
toggle.pro
#-------------------------------------------------
#
# Project created by QtCreator 2010-12-14T21:46:25
#
#-------------------------------------------------
QT += gui
TARGET = toggle
CONFIG += app_bundle
TEMPLATE = app
SOURCES += main.cpp
toggle.cpp
#include <QtGui/QApplication>
#include <QDialog>
#include <QWidget>
#include <QPushButton>
#include <QHBoxLayout>
#include <QMessageBox>
class QPushButton;
class toggle : public QDialog
{
Q_OBJECT;
public:
toggle( QWidget *parent=0 );
private slots:
void buttonClicked();
void buttonToggled();
private:
QPushButton *clickButton;
QPushButton *toggleButton;
};
toggle::toggle( QWidget *parent ) : QDialog( parent )
{
clickButton = new QPushButton( "Click me!", this );
toggleButton = new QPushButton( "Toggle me!", this );
toggleButton->setCheckable( true );
QHBoxLayout *layout = new QHBoxLayout( this );
layout->addWidget( clickButton );
layout->addWidget( toggleButton );
connect( clickButton, SIGNAL(clicked()), this, SLOT(buttonClicked()) );
connect( toggleButton, SIGNAL(clicked()), this, SLOT(buttonToggled()) );
};
void toggle::buttonClicked()
{
QMessageBox::information( this, "Clicked!", "The button was clicked!" );
};
void toggle::buttonToggled()
{
QMessageBox::information( this, "Toggled!", QString("The button is %1!").arg(toggleButton->isChecked()?"pressed":"released") );
}
int main( int argc, char **argv )
{
QApplication app( argc, argv );
toggle *dlg = new toggle();
dlg->show();
return app.exec();
}