📄 sqlformwizardimpl.cpp
字号:
#ifndef QT_NO_SQL DesignerProject *proIface = (DesignerProject*)( (DesignerInterface*)appIface )->currentProject(); if ( !widget || !proIface ) { SqlFormWizardBase::accept(); return; } QString conn = listBoxConnection->currentText(); QString table = listBoxTable->currentText(); QStringList lst; lst << conn << table; if ( !conn.isEmpty() && !table.isEmpty() ) { formWindow->setProperty( widget, "database", lst ); formWindow->setPropertyChanged( widget, "database", TRUE ); } if ( !editFilter->text().isEmpty() ) { widget->setProperty( "filter", editFilter->text() ); formWindow->setPropertyChanged( widget, "filter", TRUE ); } if ( listBoxSortedField->count() ) { QStringList lst; for ( uint i = 0; i < listBoxSortedField->count(); ++i ) lst << listBoxSortedField->text( i ); widget->setProperty( "sort", lst ); formWindow->setPropertyChanged( widget, "sort", TRUE ); } QPtrList<DesignerDatabase> databases = proIface->databaseConnections(); DesignerDatabase *database = 0; for ( DesignerDatabase *d = databases.first(); d; d = databases.next() ) { if ( d->name() == listBoxConnection->currentText() || ( d->name() == "(default)" || d->name().isEmpty() ) && listBoxConnection->currentText() == "(default)" ) { database = d; d->open( FALSE ); break; } } if (!database) { return; } QSqlCursor tab( listBoxTable->currentText(), TRUE, database->connection() ); int columns = 2; QSqlEditorFactory * f = QSqlEditorFactory::defaultFactory(); QWidget * editorDummy; QWidget * editor; QLabel * label; int visibleFields = listBoxSelectedField->count(); int numPerColumn = visibleFields / columns; if( (visibleFields % columns) > 0) numPerColumn++; int row = 0; const int SPACING = 25; const int COL_SPACING = SPACING*9; uint j; switch ( mode ) { case None: break; case View: case Browser: { if ( mode == Browser && !checkBoxAutoEdit->isChecked() ) { ((QDataBrowser*)widget)->setAutoEdit( FALSE ); formWindow->setPropertyChanged( widget, "autoEdit", TRUE ); } formWindow->clearSelection(); bool createFieldLayout = checkCreateFieldLayout->isChecked(); bool createButtonLayout = checkCreateButtonLayout->isChecked(); bool createLayouts = checkCreateLayouts->isChecked(); bool labelAbove = radioLabelsTop->isOn(); uint numCols = spinNumberOfColumns->text().toInt(); uint currentCol = 0; uint fieldsPerCol = listBoxSelectedField->count(); uint fieldsInCol = 0; if ( listBoxSelectedField->count() ) fieldsPerCol = listBoxSelectedField->count() / numCols; /* labels and data field editors */ for( j = 0; j < listBoxSelectedField->count(); j++ ){ QSqlField* field = tab.field( listBoxSelectedField->text( j ) ); if ( !field ) continue; /* label */ QString labelName = field->name(); labelName = labelName.mid(0,1).upper() + labelName.mid(1); label = (QLabel*)formWindow->create( "QLabel", widget, QString( "label" + labelName ) ); label->setText( labelName ); label->setGeometry( SPACING + currentCol*COL_SPACING, row+SPACING, SPACING*3, SPACING ); formWindow->setPropertyChanged( label, "geometry", TRUE ); formWindow->setPropertyChanged( label, "text", TRUE ); /* editor */ editorDummy = f->createEditor( widget, field ); editor = formWindow->create( editorDummy->className(), widget, QString( QString( editorDummy->className() ) + labelName) ); delete editorDummy; if ( labelAbove ) { row += SPACING; editor->setGeometry(SPACING + currentCol*COL_SPACING, row+SPACING, SPACING*3, SPACING ); } else { editor->setGeometry(SPACING * 5 + currentCol*COL_SPACING, row+SPACING, SPACING*3, SPACING ); } formWindow->setPropertyChanged( editor, "geometry", TRUE ); if ( QString(editor->className()) == "QLineEdit" && (field->type() == QVariant::Double || field->type() == QVariant::Int || field->type() == QVariant::UInt ) ) { /* default right-align numerics */ //## ((QLineEdit*)editor)->setAlignment( Qt::AlignRight ); formWindow->setPropertyChanged( editor, "alignment", TRUE ); } if ( editor->inherits( "QSpinBox" ) ) { ( (QSpinBox*)editor )->setMaxValue( INT_MAX ); formWindow->setPropertyChanged( editor, "maxValue", TRUE ); } QStringList lst; lst << conn << table << field->name(); formWindow->setProperty( editor, "database", lst ); formWindow->setPropertyChanged( editor, "database", TRUE ); /* geometry */ if ( createFieldLayout ) { formWindow->selectWidget( label ); formWindow->selectWidget( editor ); } row += SPACING + 5; fieldsInCol++; if ( ( fieldsInCol >= fieldsPerCol ) && ( currentCol < numCols-1 ) ) { currentCol++; fieldsInCol = 0; row = 0; } } if ( listBoxSelectedField->count() ) { if ( createFieldLayout ) formWindow->layoutG(); row += SPACING; } if ( mode == Browser ) { if ( checkBoxNavig->isChecked() ) { formWindow->clearSelection(); currentCol = 0; if ( checkBoxFirst->isChecked() ) { QPushButton *pb = create_widget( widget, "PushButtonFirst", "|< &First", QRect( 3 * SPACING * currentCol, row+SPACING, SPACING * 3, SPACING ), formWindow ); formWindow->addConnection( pb, "clicked()", widget, "first()" ); formWindow->addConnection( widget, "firstRecordAvailable( bool )", pb, "setEnabled( bool )" ); currentCol++; formWindow->selectWidget( pb ); } if ( checkBoxPrev->isChecked() ) { QPushButton *pb = create_widget( widget, "PushButtonPrev", "<< &Prev", QRect( 3 * SPACING * currentCol, row+SPACING, SPACING * 3, SPACING ), formWindow ); formWindow->addConnection( pb, "clicked()", widget, "prev()" ); formWindow->addConnection( widget, "prevRecordAvailable( bool )", pb, "setEnabled( bool )" ); currentCol++; formWindow->selectWidget( pb ); } if ( checkBoxNext->isChecked() ) { QPushButton *pb = create_widget( widget, "PushButtonNext", "&Next >>", QRect( 3 * SPACING * currentCol, row+SPACING, SPACING * 3, SPACING ), formWindow ); formWindow->addConnection( pb, "clicked()", widget, "next()" ); formWindow->addConnection( widget, "nextRecordAvailable( bool )", pb, "setEnabled( bool )" ); currentCol++; formWindow->selectWidget( pb ); } if ( checkBoxLast->isChecked() ) { QPushButton *pb = create_widget( widget, "PushButtonLast", "&Last >|", QRect( 3 * SPACING * currentCol, row+SPACING, SPACING*3, SPACING ), formWindow ); formWindow->addConnection( pb, "clicked()", widget, "last()" ); formWindow->addConnection( widget, "lastRecordAvailable( bool )", pb, "setEnabled( bool )" ); currentCol++; formWindow->selectWidget( pb ); } if ( createButtonLayout ) formWindow->layoutH(); } if ( checkBoxEdit->isChecked() ) { formWindow->clearSelection(); row += SPACING; currentCol = 0; if ( checkBoxInsert->isChecked() ) { QPushButton *pb = create_widget( widget, "PushButtonInsert", "&Insert", QRect( 3 * SPACING * currentCol, row+SPACING, SPACING * 3, SPACING ), formWindow ); formWindow->addConnection( pb, "clicked()", widget, "insert()" ); currentCol++; formWindow->selectWidget( pb ); } if ( checkBoxUpdate->isChecked() ) { QPushButton *pb = create_widget( widget, "PushButtonUpdate", "&Update", QRect( 3 * SPACING * currentCol, row+SPACING, SPACING * 3, SPACING ), formWindow ); formWindow->addConnection( pb, "clicked()", widget, "update()" ); currentCol++; formWindow->selectWidget( pb ); } if ( checkBoxDelete->isChecked() ) { QPushButton *pb = create_widget( widget, "PushButtonDelete", "&Delete", QRect( 3 * SPACING * currentCol, row+SPACING, SPACING * 3, SPACING ), formWindow ); formWindow->addConnection( pb, "clicked()", widget, "del()" ); currentCol++; formWindow->selectWidget( pb ); } if ( createButtonLayout ) formWindow->layoutH(); } } if ( createLayouts ) formWindow->layoutGContainer( widget ); formWindow->clearSelection(); break; } case Table: { QDataTable* sqlTable = ((QDataTable*)widget); if ( checkBoxAutoEdit->isChecked() ) { sqlTable->setAutoEdit( TRUE ); formWindow->setPropertyChanged( sqlTable, "autoEdit", TRUE ); } if ( checkBoxReadOnly->isChecked() ) { sqlTable->setReadOnly( TRUE ); formWindow->setPropertyChanged( sqlTable, "readOnly", TRUE ); } else { if ( checkBoxConfirmInserts->isChecked() ) { sqlTable->setConfirmInsert( TRUE ); formWindow->setPropertyChanged( sqlTable, "confirmInsert", TRUE ); } if ( checkBoxConfirmUpdates->isChecked() ) { sqlTable->setConfirmUpdate( TRUE ); formWindow->setPropertyChanged( sqlTable, "confirmUpdate", TRUE ); } if ( checkBoxConfirmDeletes->isChecked() ) { sqlTable->setConfirmDelete( TRUE ); formWindow->setPropertyChanged( sqlTable, "confirmDelete", TRUE ); } if ( checkBoxConfirmCancels->isChecked() ) { sqlTable->setConfirmCancels( TRUE ); formWindow->setPropertyChanged( sqlTable, "confirmCancels", TRUE ); } } if ( checkBoxSorting->isChecked() ) { sqlTable->setSorting( TRUE ); formWindow->setPropertyChanged( sqlTable, "sorting", TRUE ); } QMap<QString, QString> columnFields; sqlTable->setNumCols( listBoxSelectedField->count() ); // no need to change property through mdbIface here, since QDataTable doesn't offer that through Designer for( j = 0; j < listBoxSelectedField->count(); j++ ){ QSqlField* field = tab.field( listBoxSelectedField->text( j ) ); if ( !field ) continue; QString labelName = field->name(); labelName = labelName.mid(0,1).upper() + labelName.mid(1); ((QTable*)widget)->horizontalHeader()->setLabel( j, labelName ); columnFields.insert( labelName, field->name() ); } formWindow->setColumnFields( widget, columnFields ); break; } } database->close();#endif SqlFormWizardBase::accept();}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -