igor
16th January 2007, 02:37
It should work (I think)
:confused:
#include <QApplication>
#include <QFont>
#include <QPushButton>
#include <QWidget>
#include <QCalendarWidget>
#include <QVBoxLayout>
#include <iostream>
class MyWidget : public QWidget
{
Q_OBJECT
public:
MyWidget(QWidget *parent = 0) ;
public slots:
void calClicked ( const QDate & ) ;
} ;
void MyWidget::calClicked ( const QDate & theDate )
{ std::cout << theDate.toString( "ddd MMMM d yyyy" ).toStdString() << std::endl ;
}
MyWidget::MyWidget ( QWidget *parent ) : QWidget ( parent )
{
QPushButton *quit = new QPushButton ( tr ( "Quit" ), this ) ;
quit->setGeometry ( 62, 40, 75, 30 ) ;
quit->setFont ( QFont( "Times", 18, QFont::Bold ) ) ;
connect ( quit, SIGNAL( clicked() ), qApp, SLOT(quit()) ) ;
QCalendarWidget *dateEdit = new QCalendarWidget () ;
connect ( dateEdit, SIGNAL( clicked(const QDate&) ), this, SLOT(calClicked(const QDate&)) ) ;
QVBoxLayout *layout = new QVBoxLayout;
layout->addWidget(dateEdit);
layout->addWidget(quit);
setLayout(layout);
}
int main(int argc, char* argv[] )
{
QApplication app(argc, argv ) ;
MyWidget widget ;
widget.show() ;
return app.exec() ;
}
Here's the compile:
c++ -headerpad_max_install_names -o DIY-Cal.app/Contents/MacOS/DIY-Cal main.o -L/usr/local/Trolltech/Qt-4.2.2/lib -lQtGui -L/Volumes/Whopper07/TiBookPurge/qt-mac-opensource-src-4.2.2/lib -framework Carbon -framework QuickTime -framework AppKit -lQtCore -lz -lm -liconv -framework ApplicationServices
/usr/bin/ld: Undefined symbols:
MyWidget::staticMetaObject
vtable for MyWidget
collect2: ld returned 1 exit status
make: *** [DIY-Cal.app/Contents/MacOS/DIY-Cal] Error 1
What is even weirder, it WILL compile if I remove "Q_OBJECT", but when I run it, it says:
Object::connect: No such slot QWidget::calClicked(QDate)
Help ! :crying:
:confused:
#include <QApplication>
#include <QFont>
#include <QPushButton>
#include <QWidget>
#include <QCalendarWidget>
#include <QVBoxLayout>
#include <iostream>
class MyWidget : public QWidget
{
Q_OBJECT
public:
MyWidget(QWidget *parent = 0) ;
public slots:
void calClicked ( const QDate & ) ;
} ;
void MyWidget::calClicked ( const QDate & theDate )
{ std::cout << theDate.toString( "ddd MMMM d yyyy" ).toStdString() << std::endl ;
}
MyWidget::MyWidget ( QWidget *parent ) : QWidget ( parent )
{
QPushButton *quit = new QPushButton ( tr ( "Quit" ), this ) ;
quit->setGeometry ( 62, 40, 75, 30 ) ;
quit->setFont ( QFont( "Times", 18, QFont::Bold ) ) ;
connect ( quit, SIGNAL( clicked() ), qApp, SLOT(quit()) ) ;
QCalendarWidget *dateEdit = new QCalendarWidget () ;
connect ( dateEdit, SIGNAL( clicked(const QDate&) ), this, SLOT(calClicked(const QDate&)) ) ;
QVBoxLayout *layout = new QVBoxLayout;
layout->addWidget(dateEdit);
layout->addWidget(quit);
setLayout(layout);
}
int main(int argc, char* argv[] )
{
QApplication app(argc, argv ) ;
MyWidget widget ;
widget.show() ;
return app.exec() ;
}
Here's the compile:
c++ -headerpad_max_install_names -o DIY-Cal.app/Contents/MacOS/DIY-Cal main.o -L/usr/local/Trolltech/Qt-4.2.2/lib -lQtGui -L/Volumes/Whopper07/TiBookPurge/qt-mac-opensource-src-4.2.2/lib -framework Carbon -framework QuickTime -framework AppKit -lQtCore -lz -lm -liconv -framework ApplicationServices
/usr/bin/ld: Undefined symbols:
MyWidget::staticMetaObject
vtable for MyWidget
collect2: ld returned 1 exit status
make: *** [DIY-Cal.app/Contents/MacOS/DIY-Cal] Error 1
What is even weirder, it WILL compile if I remove "Q_OBJECT", but when I run it, it says:
Object::connect: No such slot QWidget::calClicked(QDate)
Help ! :crying: