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

📄 sqlformwizardimpl.cpp

📁 Linux下的基于X11的图形开发环境。
💻 CPP
📖 第 1 页 / 共 2 页
字号:
#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 + -