From bd0f3345a938b35ce6a12f6150373b0955b8dd12 Mon Sep 17 00:00:00 2001 From: Timothy Pearson Date: Sun, 10 Jul 2011 15:24:15 -0500 Subject: Add Qt3 development HEAD version --- doc/html/addressbook-example.html | 666 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 666 insertions(+) create mode 100644 doc/html/addressbook-example.html (limited to 'doc/html/addressbook-example.html') diff --git a/doc/html/addressbook-example.html b/doc/html/addressbook-example.html new file mode 100644 index 0000000..98cd357 --- /dev/null +++ b/doc/html/addressbook-example.html @@ -0,0 +1,666 @@ + + + + + +Simple Addressbook + + + + + + + +
+ +Home + | +All Classes + | +Main Classes + | +Annotated + | +Grouped Classes + | +Functions +

Simple Addressbook

+ + +

+This examples shows how to write a very simple, but complete application +using an addressbook as the example. +


+

Header file of the mainwindow: +

/****************************************************************************
+** $Id: qt/mainwindow.h   3.3.8   edited Jan 11 14:37 $
+**
+** Copyright (C) 1992-2007 Trolltech ASA.  All rights reserved.
+**
+** This file is part of an example program for Qt.  This example
+** program may be used, distributed and modified without limitation.
+**
+*****************************************************************************/
+
+#ifndef AB_MAINWINDOW_H
+#define AB_MAINWINDOW_H
+
+#include <qmainwindow.h>
+#include <qstring.h>
+
+class QToolBar;
+class QPopupMenu;
+class ABCentralWidget;
+
+class ABMainWindow: public QMainWindow
+{
+    Q_OBJECT
+
+public:
+    ABMainWindow();
+    ~ABMainWindow();
+
+protected slots:
+    void fileNew();
+    void fileOpen();
+    void fileSave();
+    void fileSaveAs();
+    void filePrint();
+    void closeWindow();
+
+protected:
+    void setupMenuBar();
+    void setupFileTools();
+    void setupStatusBar();
+    void setupCentralWidget();
+
+    QToolBar *fileTools;
+    QString filename;
+    ABCentralWidget *view;
+
+};
+
+
+#endif
+
+ +


+

Implementation of the mainwindow: +

/****************************************************************************
+** $Id: qt/mainwindow.cpp   3.3.8   edited Jan 11 14:37 $
+**
+** Copyright (C) 1992-2007 Trolltech ASA.  All rights reserved.
+**
+** This file is part of an example program for Qt.  This example
+** program may be used, distributed and modified without limitation.
+**
+*****************************************************************************/
+
+#include "mainwindow.h"
+#include "centralwidget.h"
+
+#include <qtoolbar.h>
+#include <qtoolbutton.h>
+#include <qpopupmenu.h>
+#include <qmenubar.h>
+#include <qstatusbar.h>
+#include <qapplication.h>
+#include <qfiledialog.h>
+
+ABMainWindow::ABMainWindow()
+    : QMainWindow( 0, "example addressbook application" ),
+      filename( QString::null )
+{
+    setupMenuBar();
+    setupFileTools();
+    setupStatusBar();
+    setupCentralWidget();
+}
+
+
+ABMainWindow::~ABMainWindow()
+{
+}
+
+void ABMainWindow::setupMenuBar()
+{
+    QPopupMenu *file = new QPopupMenu( this );
+    menuBar()->insertItem( "&File", file );
+
+    file->insertItem( "New", this, SLOT( fileNew() ), CTRL + Key_N );
+    file->insertItem( QPixmap( "fileopen.xpm" ), "Open", this, SLOT( fileOpen() ), CTRL + Key_O );
+    file->insertSeparator();
+    file->insertItem( QPixmap( "filesave.xpm" ), "Save", this, SLOT( fileSave() ), CTRL + Key_S );
+    file->insertItem( "Save As...", this, SLOT( fileSaveAs() ) );
+    file->insertSeparator();
+    file->insertItem( QPixmap( "fileprint.xpm" ), "Print...", this, SLOT( filePrint() ), CTRL + Key_P );
+    file->insertSeparator();
+    file->insertItem( "Close", this, SLOT( closeWindow() ), CTRL + Key_W );
+    file->insertItem( "Quit", qApp, SLOT( quit() ), CTRL + Key_Q );
+}
+
+void ABMainWindow::setupFileTools()
+{
+    //fileTools = new QToolBar( this, "file operations" );
+}
+
+void ABMainWindow::setupStatusBar()
+{
+    //statusBar()->message( "Ready", 2000 );
+}
+
+void ABMainWindow::setupCentralWidget()
+{
+    view = new ABCentralWidget( this );
+    setCentralWidget( view );
+}
+
+void ABMainWindow::closeWindow()
+{
+    close();
+}
+
+void ABMainWindow::fileNew()
+{
+}
+
+void ABMainWindow::fileOpen()
+{
+    QString fn = QFileDialog::getOpenFileName( QString::null, QString::null, this );
+    if ( !fn.isEmpty() ) {
+        filename = fn;
+        view->load( filename );
+    }
+}
+
+void ABMainWindow::fileSave()
+{
+    if ( filename.isEmpty() ) {
+        fileSaveAs();
+        return;
+    }
+
+    view->save( filename );
+}
+
+void ABMainWindow::fileSaveAs()
+{
+    QString fn = QFileDialog::getSaveFileName( QString::null, QString::null, this );
+    if ( !fn.isEmpty() ) {
+        filename = fn;
+        fileSave();
+    }
+}
+
+void ABMainWindow::filePrint()
+{
+}
+
+ +


+

Header file of the centralwidget: +

/****************************************************************************
+** $Id: qt/centralwidget.h   3.3.8   edited Jan 11 14:37 $
+**
+** Copyright (C) 1992-2007 Trolltech ASA.  All rights reserved.
+**
+** This file is part of an example program for Qt.  This example
+** program may be used, distributed and modified without limitation.
+**
+*****************************************************************************/
+
+#ifndef AB_CENTRALWIDGET_H
+#define AB_CENTRALWIDGET_H
+
+#include <qwidget.h>
+#include <qstring.h>
+
+class QTabWidget;
+class QListView;
+class QGridLayout;
+class QLineEdit;
+class QPushButton;
+class QListViewItem;
+class QCheckBox;
+
+class ABCentralWidget : public QWidget
+{
+    Q_OBJECT
+
+public:
+    ABCentralWidget( QWidget *parent, const char *name = 0 );
+
+    void save( const QString &filename );
+    void load( const QString &filename );
+
+protected slots:
+    void addEntry();
+    void changeEntry();
+    void itemSelected( QListViewItem* );
+    void selectionChanged();
+    void toggleFirstName();
+    void toggleLastName();
+    void toggleAddress();
+    void toggleEMail();
+    void findEntries();
+
+protected:
+    void setupTabWidget();
+    void setupListView();
+
+    QGridLayout *mainGrid;
+    QTabWidget *tabWidget;
+    QListView *listView;
+    QPushButton *add, *change, *find;
+    QLineEdit *iFirstName, *iLastName, *iAddress, *iEMail,
+        *sFirstName, *sLastName, *sAddress, *sEMail;
+    QCheckBox *cFirstName, *cLastName, *cAddress, *cEMail;
+
+};
+
+#endif
+
+ +


+

Implementation of the centralwidget: +

/****************************************************************************
+** $Id: qt/centralwidget.cpp   3.3.8   edited Jan 11 14:37 $
+**
+** Copyright (C) 1992-2007 Trolltech ASA.  All rights reserved.
+**
+** This file is part of an example program for Qt.  This example
+** program may be used, distributed and modified without limitation.
+**
+*****************************************************************************/
+
+#include "centralwidget.h"
+
+#include <qtabwidget.h>
+#include <qlistview.h>
+#include <qlayout.h>
+#include <qwidget.h>
+#include <qlabel.h>
+#include <qpushbutton.h>
+#include <qlineedit.h>
+#include <qlabel.h>
+#include <qcheckbox.h>
+#include <qfile.h>
+#include <qtextstream.h>
+
+ABCentralWidget::ABCentralWidget( QWidget *parent, const char *name )
+    : QWidget( parent, name )
+{
+    mainGrid = new QGridLayout( this, 2, 1, 5, 5 );
+
+    setupTabWidget();
+    setupListView();
+
+    mainGrid->setRowStretch( 0, 0 );
+    mainGrid->setRowStretch( 1, 1 );
+}
+
+void ABCentralWidget::save( const QString &filename )
+{
+    if ( !listView->firstChild() )
+        return;
+
+    QFile f( filename );
+    if ( !f.open( IO_WriteOnly ) )
+        return;
+
+    QTextStream t( &f );
+    t.setEncoding(QTextStream::UnicodeUTF8);
+
+    QListViewItemIterator it( listView );
+
+    for ( ; it.current(); ++it )
+        for ( unsigned int i = 0; i < 4; i++ )
+            t << it.current()->text( i ) << "\n";
+
+    f.close();
+}
+
+void ABCentralWidget::load( const QString &filename )
+{
+    listView->clear();
+
+    QFile f( filename );
+    if ( !f.open( IO_ReadOnly ) )
+        return;
+
+    QTextStream t( &f );
+    t.setEncoding(QTextStream::UnicodeUTF8);
+
+    while ( !t.atEnd() ) {
+        QListViewItem *item = new QListViewItem( listView );
+        for ( unsigned int i = 0; i < 4; i++ )
+            item->setText( i, t.readLine() );
+    }
+
+    f.close();
+}
+
+void ABCentralWidget::setupTabWidget()
+{
+    tabWidget = new QTabWidget( this );
+
+    QWidget *input = new QWidget( tabWidget );
+    QGridLayout *grid1 = new QGridLayout( input, 2, 5, 5, 5 );
+
+    QLabel *liFirstName = new QLabel( "First &Name", input );
+    liFirstName->resize( liFirstName->sizeHint() );
+    grid1->addWidget( liFirstName, 0, 0 );
+
+    QLabel *liLastName = new QLabel( "&Last Name", input );
+    liLastName->resize( liLastName->sizeHint() );
+    grid1->addWidget( liLastName, 0, 1 );
+
+    QLabel *liAddress = new QLabel( "Add&ress", input );
+    liAddress->resize( liAddress->sizeHint() );
+    grid1->addWidget( liAddress, 0, 2 );
+
+    QLabel *liEMail = new QLabel( "&E-Mail", input );
+    liEMail->resize( liEMail->sizeHint() );
+    grid1->addWidget( liEMail, 0, 3 );
+
+    add = new QPushButton( "A&dd", input );
+    add->resize( add->sizeHint() );
+    grid1->addWidget( add, 0, 4 );
+    connect( add, SIGNAL( clicked() ), this, SLOT( addEntry() ) );
+
+    iFirstName = new QLineEdit( input );
+    iFirstName->resize( iFirstName->sizeHint() );
+    grid1->addWidget( iFirstName, 1, 0 );
+    liFirstName->setBuddy( iFirstName );
+
+    iLastName = new QLineEdit( input );
+    iLastName->resize( iLastName->sizeHint() );
+    grid1->addWidget( iLastName, 1, 1 );
+    liLastName->setBuddy( iLastName );
+
+    iAddress = new QLineEdit( input );
+    iAddress->resize( iAddress->sizeHint() );
+    grid1->addWidget( iAddress, 1, 2 );
+    liAddress->setBuddy( iAddress );
+
+    iEMail = new QLineEdit( input );
+    iEMail->resize( iEMail->sizeHint() );
+    grid1->addWidget( iEMail, 1, 3 );
+    liEMail->setBuddy( iEMail );
+
+    change = new QPushButton( "&Change", input );
+    change->resize( change->sizeHint() );
+    grid1->addWidget( change, 1, 4 );
+    connect( change, SIGNAL( clicked() ), this, SLOT( changeEntry() ) );
+
+    tabWidget->addTab( input, "&Add/Change Entry" );
+
+    // --------------------------------------
+
+    QWidget *search = new QWidget( this );
+    QGridLayout *grid2 = new QGridLayout( search, 2, 5, 5, 5 );
+
+    cFirstName = new QCheckBox( "First &Name", search );
+    cFirstName->resize( cFirstName->sizeHint() );
+    grid2->addWidget( cFirstName, 0, 0 );
+    connect( cFirstName, SIGNAL( clicked() ), this, SLOT( toggleFirstName() ) );
+
+    cLastName = new QCheckBox( "&Last Name", search );
+    cLastName->resize( cLastName->sizeHint() );
+    grid2->addWidget( cLastName, 0, 1 );
+    connect( cLastName, SIGNAL( clicked() ), this, SLOT( toggleLastName() ) );
+
+    cAddress = new QCheckBox( "Add&ress", search );
+    cAddress->resize( cAddress->sizeHint() );
+    grid2->addWidget( cAddress, 0, 2 );
+    connect( cAddress, SIGNAL( clicked() ), this, SLOT( toggleAddress() ) );
+
+    cEMail = new QCheckBox( "&E-Mail", search );
+    cEMail->resize( cEMail->sizeHint() );
+    grid2->addWidget( cEMail, 0, 3 );
+    connect( cEMail, SIGNAL( clicked() ), this, SLOT( toggleEMail() ) );
+
+    sFirstName = new QLineEdit( search );
+    sFirstName->resize( sFirstName->sizeHint() );
+    grid2->addWidget( sFirstName, 1, 0 );
+
+    sLastName = new QLineEdit( search );
+    sLastName->resize( sLastName->sizeHint() );
+    grid2->addWidget( sLastName, 1, 1 );
+
+    sAddress = new QLineEdit( search );
+    sAddress->resize( sAddress->sizeHint() );
+    grid2->addWidget( sAddress, 1, 2 );
+
+    sEMail = new QLineEdit( search );
+    sEMail->resize( sEMail->sizeHint() );
+    grid2->addWidget( sEMail, 1, 3 );
+
+    find = new QPushButton( "F&ind", search );
+    find->resize( find->sizeHint() );
+    grid2->addWidget( find, 1, 4 );
+    connect( find, SIGNAL( clicked() ), this, SLOT( findEntries() ) );
+
+    cFirstName->setChecked( TRUE );
+    sFirstName->setEnabled( TRUE );
+    sLastName->setEnabled( FALSE );
+    sAddress->setEnabled( FALSE );
+    sEMail->setEnabled( FALSE );
+
+    tabWidget->addTab( search, "&Search" );
+
+    mainGrid->addWidget( tabWidget, 0, 0 );
+}
+
+void ABCentralWidget::setupListView()
+{
+    listView = new QListView( this );
+    listView->addColumn( "First Name" );
+    listView->addColumn( "Last Name" );
+    listView->addColumn( "Address" );
+    listView->addColumn( "E-Mail" );
+
+    listView->setSelectionMode( QListView::Single );
+
+    connect( listView, SIGNAL( clicked( QListViewItem* ) ), this, SLOT( itemSelected( QListViewItem* ) ) );
+
+    mainGrid->addWidget( listView, 1, 0 );
+    listView->setAllColumnsShowFocus( TRUE );
+}
+
+void ABCentralWidget::addEntry()
+{
+    if ( !iFirstName->text().isEmpty() || !iLastName->text().isEmpty() ||
+         !iAddress->text().isEmpty() || !iEMail->text().isEmpty() ) {
+        QListViewItem *item = new QListViewItem( listView );
+        item->setText( 0, iFirstName->text() );
+        item->setText( 1, iLastName->text() );
+        item->setText( 2, iAddress->text() );
+        item->setText( 3, iEMail->text() );
+    }
+
+    iFirstName->setText( "" );
+    iLastName->setText( "" );
+    iAddress->setText( "" );
+    iEMail->setText( "" );
+}
+
+void ABCentralWidget::changeEntry()
+{
+    QListViewItem *item = listView->currentItem();
+
+    if ( item &&
+         ( !iFirstName->text().isEmpty() || !iLastName->text().isEmpty() ||
+           !iAddress->text().isEmpty() || !iEMail->text().isEmpty() ) ) {
+        item->setText( 0, iFirstName->text() );
+        item->setText( 1, iLastName->text() );
+        item->setText( 2, iAddress->text() );
+        item->setText( 3, iEMail->text() );
+    }
+}
+
+void ABCentralWidget::selectionChanged()
+{
+    iFirstName->setText( "" );
+    iLastName->setText( "" );
+    iAddress->setText( "" );
+    iEMail->setText( "" );
+}
+
+void ABCentralWidget::itemSelected( QListViewItem *item )
+{
+    if ( !item )
+        return;
+    item->setSelected( TRUE );
+    item->repaint();
+
+    iFirstName->setText( item->text( 0 ) );
+    iLastName->setText( item->text( 1 ) );
+    iAddress->setText( item->text( 2 ) );
+    iEMail->setText( item->text( 3 ) );
+}
+
+void ABCentralWidget::toggleFirstName()
+{
+    sFirstName->setText( "" );
+
+    if ( cFirstName->isChecked() ) {
+        sFirstName->setEnabled( TRUE );
+        sFirstName->setFocus();
+    }
+    else
+        sFirstName->setEnabled( FALSE );
+}
+
+void ABCentralWidget::toggleLastName()
+{
+    sLastName->setText( "" );
+
+    if ( cLastName->isChecked() ) {
+        sLastName->setEnabled( TRUE );
+        sLastName->setFocus();
+    }
+    else
+        sLastName->setEnabled( FALSE );
+}
+
+void ABCentralWidget::toggleAddress()
+{
+    sAddress->setText( "" );
+
+    if ( cAddress->isChecked() ) {
+        sAddress->setEnabled( TRUE );
+        sAddress->setFocus();
+    }
+    else
+        sAddress->setEnabled( FALSE );
+}
+
+void ABCentralWidget::toggleEMail()
+{
+    sEMail->setText( "" );
+
+    if ( cEMail->isChecked() ) {
+        sEMail->setEnabled( TRUE );
+        sEMail->setFocus();
+    }
+    else
+        sEMail->setEnabled( FALSE );
+}
+
+void ABCentralWidget::findEntries()
+{
+    if ( !cFirstName->isChecked() &&
+         !cLastName->isChecked() &&
+         !cAddress->isChecked() &&
+         !cEMail->isChecked() ) {
+        listView->clearSelection();
+        return;
+    }
+
+    QListViewItemIterator it( listView );
+
+    for ( ; it.current(); ++it ) {
+        bool select = TRUE;
+
+        if ( cFirstName->isChecked() ) {
+            if ( select && it.current()->text( 0 ).contains( sFirstName->text() ) )
+                select = TRUE;
+            else
+                select = FALSE;
+        }
+        if ( cLastName->isChecked() ) {
+            if ( select && it.current()->text( 1 ).contains( sLastName->text() ) )
+                select = TRUE;
+            else
+                select = FALSE;
+        }
+        if ( cAddress->isChecked() ) {
+            if ( select && it.current()->text( 2 ).contains( sAddress->text() ) )
+                select = TRUE;
+            else
+                select = FALSE;
+        }
+        if ( cEMail->isChecked() ) {
+            if ( select && it.current()->text( 3 ).contains( sEMail->text() ) )
+                select = TRUE;
+            else
+                select = FALSE;
+        }
+
+        if ( select )
+            it.current()->setSelected( TRUE );
+        else
+            it.current()->setSelected( FALSE );
+        it.current()->repaint();
+    }
+}
+
+ +


+

Main: +

/****************************************************************************
+** $Id: qt/main.cpp   3.3.8   edited Jan 11 14:37 $
+**
+** Copyright (C) 1992-2007 Trolltech ASA.  All rights reserved.
+**
+** This file is part of an example program for Qt.  This example
+** program may be used, distributed and modified without limitation.
+**
+*****************************************************************************/
+
+#include <qapplication.h>
+
+#include "mainwindow.h"
+
+int main( int argc, char ** argv )
+{
+    QApplication a( argc, argv );
+
+    ABMainWindow *mw = new ABMainWindow();
+    mw->setCaption( "Qt Example - Addressbook" );
+    a.setMainWidget( mw );
+    mw->show();
+
+    a.connect( &a, SIGNAL( lastWindowClosed() ), &a, SLOT( quit() ) );
+    int result = a.exec();
+    delete mw;
+    return result;
+}
+
+ +

See also Examples. + + +


+ +
Copyright © 2007 +TrolltechTrademarks +
Qt 3.3.8
+
+ -- cgit v1.2.1