Listing 2. Creating the C++ Source Code
#include "hello.h"
#include <qmultilineedit.h>
#include <qpushbutton.h>
#include <qlayout.h>
void Hello::quit () {
MyConfiguration->writeEntry("counter", counter);
// write the counter value
delete MyConfiguration;
this->close();
}
void Hello::work () {
EditField->append ( tr( "%1 little PDA%2 sitting
in a cradle..." ).arg(counter)
.arg((counter>1)?"s":"") );
counter++;
}
Hello::Hello( QWidget* parent, const char* name,
WFlags fl )
: QWidget( parent, name, fl )
{
if ( !name ) setName( "Hello" );
setCaption( tr( "Hello there!" ) );
HelloLayout = new QGridLayout( this );
HelloLayout->setSpacing( 5 );
HelloLayout->setMargin( 10 );
ExitButton = new QPushButton( this, "ExitButton" );
ExitButton->setText( tr( "Exit" ) );
HelloLayout->addWidget( ExitButton, 1, 1 );
WorkButton = new QPushButton( this, "WorkButton" );
WorkButton->setText( tr( "Work" ) );
HelloLayout->addWidget( WorkButton, 1, 0 );
EditField = new QMultiLineEdit( this, "EditField" );
HelloLayout->addMultiCellWidget
( EditField, 0, 0, 0, 1 );
connect ( ExitButton, SIGNAL(clicked()), this,
SLOT(quit()) );
connect ( WorkButton, SIGNAL(clicked()), this,
SLOT(work()) );
MyConfiguration=new Config(tr("hello"));
// Create Qtopia Config object for
// application hello
MyConfiguration->setGroup("hello group");
// Name-space within the application configuration
counter=MyConfiguration->readNumEntry("counter",1);
// Read the counter from configuration
work();
}