toggle() in QT



  • Hallo, ich habe folgende Datei und würde gern mal wissen, wozu die Toggle-Dinger am Ende gut sind. Wäre schön, wenn mir da mal jemand einen Tipp geben könnte:

    #include "centralwidget.h"
    
    #include <qgroupbox.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>
    
    CDCentralWidget::CDCentralWidget( QWidget *parent, const char *name )
        : QWidget( parent, name )
    {
        mainGrid = new QGridLayout( this, 3, 1, 1, 1 );
    
        setupGroupBox1();
        setupGroupBox2();
        setupListView();
    
        mainGrid->setRowStretch( 0, 1 );
        mainGrid->setRowStretch( 1, 1 );
        mainGrid->setRowStretch( 2, 2 );
    }
    
    void CDCentralWidget::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 CDCentralWidget::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();
    }
    
    // FENSTER-LAYOUT
    
    void CDCentralWidget::setupGroupBox1()
    {
        groupBox1 = new QGroupBox( this, "GroupBox1" );
        QGridLayout *grid1 = new QGridLayout( groupBox1, 2, 5, 5, 5 );
        groupBox1->setTitle( "Eintrag hinzufügen / ändern" );
    
        QLabel *liInterpret = new QLabel( "&Interpret", groupBox1 );
        liInterpret->resize( liInterpret->sizeHint() );
        grid1->addWidget( liInterpret, 0, 0 );
    
        QLabel *liTitel = new QLabel( "&Titel", groupBox1 );
        liTitel->resize( liTitel->sizeHint() );
        grid1->addWidget( liTitel, 0, 1 );
    
        QLabel *liStilrichtung = new QLabel( "&Stilrichtung", groupBox1);
        liStilrichtung->resize( liStilrichtung->sizeHint() );
        grid1->addWidget( liStilrichtung, 0, 2 );
    
        QLabel *liJahr = new QLabel( "&Jahr", groupBox1 );
        liJahr->resize( liJahr->sizeHint() );
        grid1->addWidget( liJahr, 0, 3 );
    
        add = new QPushButton( "&Hinzufügen", groupBox1 );
        add->resize( add->sizeHint() );
        grid1->addWidget( add, 0, 4 );
        connect( add, SIGNAL( clicked() ), this, SLOT( addEntry() ) );
    
        iInterpret = new QLineEdit( groupBox1 );
        iInterpret->resize( iInterpret->sizeHint() );
        grid1->addWidget( iInterpret, 1, 0 );
        liInterpret->setBuddy( iInterpret );
    
        iTitel = new QLineEdit( groupBox1 );
        iTitel->resize( iTitel->sizeHint() );
        grid1->addWidget( iTitel, 1, 1 );
        liTitel->setBuddy( iTitel );
    
        iStilrichtung = new QLineEdit( groupBox1 );
        iStilrichtung->resize( iStilrichtung->sizeHint() );
        grid1->addWidget( iStilrichtung, 1, 2 );
        liStilrichtung->setBuddy( iStilrichtung );
    
        iJahr = new QLineEdit( groupBox1 );
        iJahr->resize( iJahr->sizeHint() );
        grid1->addWidget( iJahr, 1, 3 );
        liJahr->setBuddy( iJahr );
    
        change = new QPushButton( "&Ändern", groupBox1 );
        change->resize( change->sizeHint() );
        grid1->addWidget( change, 1, 4 );
        connect( change, SIGNAL( clicked() ), this, SLOT( changeEntry() ) );
    
        mainGrid->addWidget( groupBox1, 0, 0 );
    }
    
    void CDCentralWidget::setupGroupBox2()
    {  
    
        groupBox2 = new QGroupBox( this, "GroupBox2" );
        QGridLayout *grid2 = new QGridLayout( groupBox2, 2, 5, 5, 5 );
        groupBox2->setTitle( "Eintrag suchen" );
    
        cInterpret = new QCheckBox( "&Interpret", groupBox2 );
        cInterpret->resize( cInterpret->sizeHint() );
        grid2->addWidget( cInterpret, 0, 0 );
        connect( cInterpret, SIGNAL( clicked() ), this, SLOT( toggleInterpret() ) );
    
        cTitel = new QCheckBox( "&Titel", groupBox2 );
        cTitel->resize( cTitel->sizeHint() );
        grid2->addWidget( cTitel, 0, 1 );
        connect( cTitel, SIGNAL( clicked() ), this, SLOT( toggleTitel() ) );
    
        cStilrichtung = new QCheckBox( "&Stilrichtung", groupBox2 );
        cStilrichtung->resize( cStilrichtung->sizeHint() );
        grid2->addWidget( cStilrichtung, 0, 2 );
        connect( cStilrichtung, SIGNAL( clicked() ), this, SLOT( toggleStilrichtung() ) );
    
        cJahr = new QCheckBox( "&Jahr", groupBox2 );
        cJahr->resize( cJahr->sizeHint() );
        grid2->addWidget( cJahr, 0, 3 );
        connect( cJahr, SIGNAL( clicked() ), this, SLOT( toggleJahr() ) );
    
        sInterpret = new QLineEdit( groupBox2 );
        sInterpret->resize( sInterpret->sizeHint() );
        grid2->addWidget( sInterpret, 1, 0 );
    
        sTitel = new QLineEdit( groupBox2 );
        sTitel->resize( sTitel->sizeHint() );
        grid2->addWidget( sTitel, 1, 1 );
    
        sStilrichtung = new QLineEdit( groupBox2 );
        sStilrichtung->resize( sStilrichtung->sizeHint() );
        grid2->addWidget( sStilrichtung, 1, 2 );
    
        sJahr = new QLineEdit( groupBox2 );
        sJahr->resize( sJahr->sizeHint() );
        grid2->addWidget( sJahr, 1, 3 );
    
        find = new QPushButton( "&Suchen", groupBox2 );
        find->resize( find->sizeHint() );
        grid2->addWidget( find, 1, 4 );
        connect( find, SIGNAL( clicked() ), this, SLOT( findEntries() ) );
    
        cInterpret->setChecked( TRUE );
        sInterpret->setEnabled( TRUE );
        sTitel->setEnabled( FALSE );
        sStilrichtung->setEnabled( FALSE );
        sJahr->setEnabled( FALSE );
    
        mainGrid->addWidget( groupBox2, 1, 0 );
    }
    
    void CDCentralWidget::setupListView()
    {
        listView = new QListView( this );
        listView->addColumn( "Interpret" );
        listView->addColumn( "Titel" );
        listView->addColumn( "Richtung" );
        listView->addColumn( "Jahr" );
    
        listView->setSelectionMode( QListView::Extended );
    
        connect( listView, SIGNAL( clicked( QListViewItem* ) ), this, SLOT( itemSelected( QListViewItem* ) ) );
    
        mainGrid->addWidget( listView, 2, 0 );
        listView->setAllColumnsShowFocus( TRUE );
    }
    
    void CDCentralWidget::addEntry()
    {
        if ( !iInterpret->text().isEmpty() || !iTitel->text().isEmpty() ||
             !iStilrichtung->text().isEmpty() || !iJahr->text().isEmpty() ) {
            QListViewItem *item = new QListViewItem( listView );
            item->setText( 0, iInterpret->text() );
            item->setText( 1, iTitel->text() );
            item->setText( 2, iStilrichtung->text() );
            item->setText( 3, iJahr->text() );
        }
    
        iInterpret->setText( "" );
        iTitel->setText( "" );
        iStilrichtung->setText( "" );
        iJahr->setText( "" );
    }
    
    void CDCentralWidget::changeEntry()
    {
        QListViewItem *item = listView->currentItem();
    
        if ( item &&
             ( !iInterpret->text().isEmpty() || !iTitel->text().isEmpty() ||
               !iStilrichtung->text().isEmpty() || !iJahr->text().isEmpty() ) ) {
            item->setText( 0, iInterpret->text() );
            item->setText( 1, iTitel->text() );
            item->setText( 2, iStilrichtung->text() );
            item->setText( 3, iJahr->text() );
        }
    }
    
    void CDCentralWidget::selectionChanged()
    {
        iInterpret->setText( "" );
        iTitel->setText( "" );
        iStilrichtung->setText( "" );
        iJahr->setText( "" );
    }
    
    void CDCentralWidget::itemSelected( QListViewItem *item )
    {
        if ( !item )
        return;
        item->setSelected( TRUE );
        item->repaint();
    
        iInterpret->setText( item->text( 0 ) );
        iTitel->setText( item->text( 1 ) );
        iStilrichtung->setText( item->text( 2 ) );
        iJahr->setText( item->text( 3 ) );
    }
    
    void CDCentralWidget::toggleInterpret()
    {
        sInterpret->setText( "" );
    
        if ( cInterpret->isChecked() ) {
            sInterpret->setEnabled( TRUE );
            sInterpret->setFocus();
        }
        else
            sInterpret->setEnabled( FALSE );
    }
    
    void CDCentralWidget::toggleTitel()
    {
        sTitel->setText( "" );
    
        if ( cTitel->isChecked() ) {
            sTitel->setEnabled( TRUE );
            sTitel->setFocus();
        }
        else
            sTitel->setEnabled( FALSE );
    }
    
    void CDCentralWidget::toggleStilrichtung()
    {
        sStilrichtung->setText( "" );
    
        if ( cStilrichtung->isChecked() ) {
            sStilrichtung->setEnabled( TRUE );
            sStilrichtung->setFocus();
        }
        else
            sStilrichtung->setEnabled( FALSE );
    }
    
    void CDCentralWidget::toggleJahr()
    {
        sJahr->setText( "" );
    
        if ( cJahr->isChecked() ) {
            sJahr->setEnabled( TRUE );
            sJahr->setFocus();
        }
        else
            sJahr->setEnabled( FALSE );
    }
    
    void CDCentralWidget::findEntries()
    {
        if ( !cInterpret->isChecked() &&
             !cTitel->isChecked() &&
             !cStilrichtung->isChecked() &&
             !cJahr->isChecked() ) {
            listView->clearSelection();
            return;
        }
    
        QListViewItemIterator it( listView );
    
        for ( ; it.current(); ++it ) {
            bool select = TRUE;
    
            if ( cInterpret->isChecked() ) {
                if ( select && it.current()->text( 0 ).contains( sInterpret->text() ) )
                    select = TRUE;
                else
                    select = FALSE;
            }
            if ( cTitel->isChecked() ) {
                if ( select && it.current()->text( 1 ).contains( sTitel->text() ) )
                    select = TRUE;
                else
                    select = FALSE;
            }
            if ( cStilrichtung->isChecked() ) {
                if ( select && it.current()->text( 2 ).contains( sStilrichtung->text() ) )
                    select = TRUE;
                else
                    select = FALSE;
            }
            if ( cJahr->isChecked() ) {
                if ( select && it.current()->text( 3 ).contains( sJahr->text() ) )
                    select = TRUE;
                else
                    select = FALSE;
            }
    
            if ( select )
                it.current()->setSelected( TRUE );
            else
                it.current()->setSelected( FALSE );
            it.current()->repaint();
        }
    }
    


  • Hi,

    z. B.:

    void CDCentralWidget::toggleInterpret()
    {
        sInterpret->setText( "" );
    
        if ( cInterpret->isChecked() ) {
            sInterpret->setEnabled( TRUE );
            sInterpret->setFocus();
        }
        else
            sInterpret->setEnabled( FALSE );
    }
    

    hier wird Text von sInterpret geloescht und dann, jenachdem ob cInterpret
    angehakt ist oder nicht, sInterpret aktiviert und der Focus auf dieses
    Steuerelement gesetzt. Ist es nicht angehakt, so wird sInterpreter (das
    Steuerelement) deaktiviert.

    Die anderen toggleXXX-Funktionen machen es ebenfalls so

    mfg
    v R



  • hi, danke für die schnelle antwort! 🙂


Anmelden zum Antworten