summaryrefslogtreecommitdiffstats
path: root/examples/addressbook
diff options
context:
space:
mode:
authorTimothy Pearson <kb9vqf@pearsoncomputing.net>2011-07-10 15:24:15 -0500
committerTimothy Pearson <kb9vqf@pearsoncomputing.net>2011-07-10 15:24:15 -0500
commitbd0f3345a938b35ce6a12f6150373b0955b8dd12 (patch)
tree7a520322212d48ebcb9fbe1087e7fca28b76185c /examples/addressbook
downloadqt3-bd0f3345a938b35ce6a12f6150373b0955b8dd12.tar.gz
qt3-bd0f3345a938b35ce6a12f6150373b0955b8dd12.zip
Add Qt3 development HEAD version
Diffstat (limited to 'examples/addressbook')
-rw-r--r--examples/addressbook/addressbook.doc41
-rw-r--r--examples/addressbook/addressbook.pro13
-rw-r--r--examples/addressbook/centralwidget.cpp351
-rw-r--r--examples/addressbook/centralwidget.h59
-rw-r--r--examples/addressbook/fileopen.xpm22
-rw-r--r--examples/addressbook/fileprint.xpm24
-rw-r--r--examples/addressbook/filesave.xpm22
-rw-r--r--examples/addressbook/main.cpp27
-rw-r--r--examples/addressbook/mainwindow.cpp108
-rw-r--r--examples/addressbook/mainwindow.h49
10 files changed, 716 insertions, 0 deletions
diff --git a/examples/addressbook/addressbook.doc b/examples/addressbook/addressbook.doc
new file mode 100644
index 0000000..3abc3c9
--- /dev/null
+++ b/examples/addressbook/addressbook.doc
@@ -0,0 +1,41 @@
+/*
+*/
+/*! \page addressbook-example.html
+
+ \ingroup examples
+ \title Simple Addressbook
+
+ This examples shows how to write a very simple, but complete application
+ using an addressbook as the example.
+
+ <hr>
+
+ Header file of the mainwindow:
+
+ \include addressbook/mainwindow.h
+
+ <hr>
+
+ Implementation of the mainwindow:
+
+ \include addressbook/mainwindow.cpp
+
+ <hr>
+
+ Header file of the centralwidget:
+
+ \include addressbook/centralwidget.h
+
+ <hr>
+
+ Implementation of the centralwidget:
+
+ \include addressbook/centralwidget.cpp
+
+ <hr>
+
+ Main:
+
+ \include addressbook/main.cpp
+*/
+
diff --git a/examples/addressbook/addressbook.pro b/examples/addressbook/addressbook.pro
new file mode 100644
index 0000000..f15ad9a
--- /dev/null
+++ b/examples/addressbook/addressbook.pro
@@ -0,0 +1,13 @@
+TEMPLATE = app
+TARGET = addressbook
+
+CONFIG += qt warn_on release
+DEPENDPATH = ../../include
+
+REQUIRES = full-config
+
+HEADERS = centralwidget.h \
+ mainwindow.h
+SOURCES = centralwidget.cpp \
+ main.cpp \
+ mainwindow.cpp
diff --git a/examples/addressbook/centralwidget.cpp b/examples/addressbook/centralwidget.cpp
new file mode 100644
index 0000000..195cb14
--- /dev/null
+++ b/examples/addressbook/centralwidget.cpp
@@ -0,0 +1,351 @@
+/****************************************************************************
+**
+** Copyright (C) 1992-2008 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();
+ }
+}
diff --git a/examples/addressbook/centralwidget.h b/examples/addressbook/centralwidget.h
new file mode 100644
index 0000000..6d57f8f
--- /dev/null
+++ b/examples/addressbook/centralwidget.h
@@ -0,0 +1,59 @@
+/****************************************************************************
+**
+** Copyright (C) 1992-2008 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
diff --git a/examples/addressbook/fileopen.xpm b/examples/addressbook/fileopen.xpm
new file mode 100644
index 0000000..880417e
--- /dev/null
+++ b/examples/addressbook/fileopen.xpm
@@ -0,0 +1,22 @@
+/* XPM */
+static const char *fileopen[] = {
+" 16 13 5 1",
+". c #040404",
+"# c #808304",
+"a c None",
+"b c #f3f704",
+"c c #f3f7f3",
+"aaaaaaaaa...aaaa",
+"aaaaaaaa.aaa.a.a",
+"aaaaaaaaaaaaa..a",
+"a...aaaaaaaa...a",
+".bcb.......aaaaa",
+".cbcbcbcbc.aaaaa",
+".bcbcbcbcb.aaaaa",
+".cbcb...........",
+".bcb.#########.a",
+".cb.#########.aa",
+".b.#########.aaa",
+"..#########.aaaa",
+"...........aaaaa"
+};
diff --git a/examples/addressbook/fileprint.xpm b/examples/addressbook/fileprint.xpm
new file mode 100644
index 0000000..6ada912
--- /dev/null
+++ b/examples/addressbook/fileprint.xpm
@@ -0,0 +1,24 @@
+/* XPM */
+static const char *fileprint[] = {
+" 16 14 6 1",
+". c #000000",
+"# c #848284",
+"a c #c6c3c6",
+"b c #ffff00",
+"c c #ffffff",
+"d c None",
+"ddddd.........dd",
+"dddd.cccccccc.dd",
+"dddd.c.....c.ddd",
+"ddd.cccccccc.ddd",
+"ddd.c.....c....d",
+"dd.cccccccc.a.a.",
+"d..........a.a..",
+".aaaaaaaaaa.a.a.",
+".............aa.",
+".aaaaaa###aa.a.d",
+".aaaaaabbbaa...d",
+".............a.d",
+"d.aaaaaaaaa.a.dd",
+"dd...........ddd"
+};
diff --git a/examples/addressbook/filesave.xpm b/examples/addressbook/filesave.xpm
new file mode 100644
index 0000000..bd6870f
--- /dev/null
+++ b/examples/addressbook/filesave.xpm
@@ -0,0 +1,22 @@
+/* XPM */
+static const char *filesave[] = {
+" 14 14 4 1",
+". c #040404",
+"# c #808304",
+"a c #bfc2bf",
+"b c None",
+"..............",
+".#.aaaaaaaa.a.",
+".#.aaaaaaaa...",
+".#.aaaaaaaa.#.",
+".#.aaaaaaaa.#.",
+".#.aaaaaaaa.#.",
+".#.aaaaaaaa.#.",
+".##........##.",
+".############.",
+".##.........#.",
+".##......aa.#.",
+".##......aa.#.",
+".##......aa.#.",
+"b............."
+};
diff --git a/examples/addressbook/main.cpp b/examples/addressbook/main.cpp
new file mode 100644
index 0000000..a90e58e
--- /dev/null
+++ b/examples/addressbook/main.cpp
@@ -0,0 +1,27 @@
+/****************************************************************************
+**
+** Copyright (C) 1992-2008 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;
+}
diff --git a/examples/addressbook/mainwindow.cpp b/examples/addressbook/mainwindow.cpp
new file mode 100644
index 0000000..9d83b3a
--- /dev/null
+++ b/examples/addressbook/mainwindow.cpp
@@ -0,0 +1,108 @@
+/****************************************************************************
+**
+** Copyright (C) 1992-2008 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()
+{
+}
diff --git a/examples/addressbook/mainwindow.h b/examples/addressbook/mainwindow.h
new file mode 100644
index 0000000..f409291
--- /dev/null
+++ b/examples/addressbook/mainwindow.h
@@ -0,0 +1,49 @@
+/****************************************************************************
+**
+** Copyright (C) 1992-2008 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