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!