⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 centralwidget.cpp

📁 Qt环境下开发的一个地址簿应用程序
💻 CPP
字号:
/****************************************************************************** $Id: qt/examples/addressbook/centralwidget.cpp   2.3.7   edited 2001-01-26 $**** Copyright ( C ) 1992-2000 Trolltech AS.  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 );    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 );    while ( !t.eof() ) {        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( "&Address", 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( "&Add", 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( "&Address", 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( "&Find", 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::Extended );    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();    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -