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

📄 main.cpp

📁 qt-x11-free-3.0.3.tar.gz minigui图形界面工具
💻 CPP
字号:
/****************************************************************************** $Id$**** 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 "main.h"StatusPicker::StatusPicker( QWidget *parent, const char *name )    : QComboBox( parent, name ){    QSqlCursor cur( "status" );    cur.select( cur.index( "name" ) );    int i = 0;    while ( cur.next() ) {	insertItem( cur.value( "name" ).toString(), i );	index2id[i] = cur.value( "id" ).toInt();	i++;    }}int StatusPicker::statusId() const{    return index2id[ currentItem() ];}void StatusPicker::setStatusId( int statusid ){    QMap<int,int>::Iterator it;    for ( it = index2id.begin(); it != index2id.end(); ++it ) {	if ( it.data() == statusid ) {	    setCurrentItem( it.key() );	    break;	}    }}void CustomTable::paintField( QPainter * p, const QSqlField* field,			      const QRect & cr, bool b){    if ( !field )	return;    if ( field->name() == "statusid" ) {	QSqlQuery query( "SELECT name FROM status WHERE id=" +		     field->value().toString() );	QString text;	if ( query.next() ) {	    text = query.value( 0 ).toString();	}	p->drawText( 2,2, cr.width()-4, cr.height()-4, fieldAlignment( field ), text );    }    else {	QDataTable::paintField( p, field, cr, b) ;    }}QWidget *CustomSqlEditorFactory::createEditor(    QWidget *parent, const QSqlField *field ){    if ( field->name() == "statusid" ) {	QWidget *editor = new StatusPicker( parent );	return editor;    }    return QSqlEditorFactory::createEditor( parent, field );}int main( int argc, char *argv[] ){    QApplication app( argc, argv );    if ( createConnections() ) {	QSqlCursor staffCursor( "staff" );	CustomTable		*staffTable	= new CustomTable( &staffCursor );	QSqlPropertyMap		*propMap	= new QSqlPropertyMap();	CustomSqlEditorFactory	*editorFactory	= new CustomSqlEditorFactory();	propMap->insert( "StatusPicker", "statusid" );	staffTable->installPropertyMap( propMap );	staffTable->installEditorFactory( editorFactory );	app.setMainWidget( staffTable );	staffTable->addColumn( "forename", "Forename" );	staffTable->addColumn( "surname",  "Surname" );	staffTable->addColumn( "salary",   "Annual Salary" );	staffTable->addColumn( "statusid", "Status" );	QStringList order = QStringList() << "surname" << "forename";	staffTable->setSort( order );	staffTable->refresh();	staffTable->show();	return app.exec();    }    return 1;}bool createConnections(){    // create the default database connection    QSqlDatabase *defaultDB = QSqlDatabase::addDatabase( DB_SALES_DRIVER );    if ( ! defaultDB ) {	qWarning( "Failed to connect to driver" );	return FALSE;    }    defaultDB->setDatabaseName( DB_SALES_DBNAME );    defaultDB->setUserName( DB_SALES_USER );    defaultDB->setPassword( DB_SALES_PASSWD );    defaultDB->setHostName( DB_SALES_HOST );    if ( ! defaultDB->open() ) {	qWarning( "Failed to open sales database: " +		  defaultDB->lastError().driverText() );	qWarning( defaultDB->lastError().databaseText() );	return FALSE;    }    // create a named connection to oracle    QSqlDatabase *oracle = QSqlDatabase::addDatabase( DB_ORDERS_DRIVER, "ORACLE" );    if ( ! oracle ) {	qWarning( "Failed to connect to oracle driver" );	return FALSE;    }    oracle->setDatabaseName( DB_ORDERS_DBNAME );    oracle->setUserName( DB_ORDERS_USER );    oracle->setPassword( DB_ORDERS_PASSWD );    oracle->setHostName( DB_ORDERS_HOST );    if ( ! oracle->open() ) {	qWarning( "Failed to open orders database: " +		  oracle->lastError().driverText() );	qWarning( oracle->lastError().databaseText() );	return FALSE;    }    return TRUE;}

⌨️ 快捷键说明

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