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

📄 tableeditorimpl.cpp

📁 Trolltech公司发布的基于C++图形开发环境
💻 CPP
📖 第 1 页 / 共 2 页
字号:
/************************************************************************ Copyright (C) 2000-2001 Trolltech AS.  All rights reserved.**** This file is part of Qt Designer.**** This file may be distributed and/or modified under the terms of the** GNU General Public License version 2 as published by the Free Software** Foundation and appearing in the file LICENSE.GPL included in the** packaging of this file.**** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition** licenses may use this file in accordance with the Qt Commercial License** Agreement provided with the Software.**** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.**** See http://www.trolltech.com/gpl/ for GPL licensing information.** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for**   information about Qt Commercial License Agreements.**** Contact info@trolltech.com if any conditions of this licensing are** not clear to you.************************************************************************/#include "tableeditorimpl.h"#ifndef QT_NO_TABLE#include <qtable.h>#endif#include "formwindow.h"#include <qlabel.h>#include <qcombobox.h>#include <qheader.h>#include <qlistbox.h>#include <qlineedit.h>#include <qpushbutton.h>#include "pixmapchooser.h"#include "command.h"#include <qvaluelist.h>#include <qtabwidget.h>#include <qdatatable.h>#include "project.h"#include "metadatabase.h"#include "mainwindow.h"TableEditor::TableEditor( QWidget* parent,  QWidget *editWidget, FormWindow *fw, const char* name, bool modal, WFlags fl )    : TableEditorBase( parent, name, modal, fl ),#ifndef QT_NO_TABLE    editTable( (QTable*)editWidget ),#endif    formWindow( fw ){    connect( buttonHelp, SIGNAL( clicked() ), MainWindow::self, SLOT( showDialogHelp() ) );#ifndef QT_NO_TABLE    labelColumnPixmap->setText( "" );    labelRowPixmap->setText( "" );#ifndef QT_NO_SQL    if ( !::qt_cast<QDataTable*>(editTable) ) #endif    {	labelFields->hide();	comboFields->hide();	labelTable->hide();	labelTableValue->hide();    }#ifndef QT_NO_SQL    if ( ::qt_cast<QDataTable*>(editTable) ) {	// ## why does this behave weird?	//	TabWidget->removePage( rows_tab );	//	rows_tab->hide();	// ## do this in the meantime...	TabWidget->setTabEnabled( rows_tab, FALSE );    }    if ( formWindow->project() && ::qt_cast<QDataTable*>(editTable) ) {	QStringList lst = MetaDataBase::fakeProperty( editTable, "database" ).toStringList();	if ( lst.count() == 2 && !lst[ 0 ].isEmpty() && !lst[ 1 ].isEmpty() ) {	    QStringList fields;	    fields << "<no field>";	    fields += formWindow->project()->databaseFieldList( lst[ 0 ], lst[ 1 ] );	    comboFields->insertStringList( fields );	}	if ( !lst[ 1 ].isEmpty() )	    labelTableValue->setText( lst[ 1 ] );    }#endif    readFromTable();#endif}TableEditor::~TableEditor(){}void TableEditor::columnDownClicked(){    if ( listColumns->currentItem() == -1 ||	 listColumns->currentItem() == (int)listColumns->count() - 1 ||	 listColumns->count() < 2 )	return;    saveFieldMap();    int index = listColumns->currentItem() + 1;    QListBoxItem *i = listColumns->item( listColumns->currentItem() );    listColumns->takeItem( i );    listColumns->insertItem( i, index );    listColumns->setCurrentItem( i );    readColumns();    restoreFieldMap();    currentColumnChanged( i );}void TableEditor::columnTextChanged( const QString &s ){    if ( listColumns->currentItem() == -1 )	return;    listColumns->blockSignals( TRUE );    listColumns->changeItem( s, listColumns->currentItem() );    listColumns->blockSignals( FALSE );#ifndef QT_NO_TABLE    if ( table->horizontalHeader()->iconSet( listColumns->currentItem() ) )	table->horizontalHeader()->setLabel( listColumns->currentItem(),					     *table->horizontalHeader()->iconSet( listColumns->currentItem() ), s );    else	table->horizontalHeader()->setLabel( listColumns->currentItem(), s );#endif}void TableEditor::columnUpClicked(){    if ( listColumns->currentItem() <= 0 ||	 listColumns->count() < 2 )	return;    saveFieldMap();    int index = listColumns->currentItem() - 1;    QListBoxItem *i = listColumns->item( listColumns->currentItem() );    listColumns->takeItem( i );    listColumns->insertItem( i, index );    listColumns->setCurrentItem( i );    readColumns();    restoreFieldMap();    currentColumnChanged( i );}void TableEditor::currentColumnChanged( QListBoxItem *i ){    if ( !i )	return;    editColumnText->blockSignals( TRUE );    editColumnText->setText( i->text() );    if ( i->pixmap() )	labelColumnPixmap->setPixmap( *i->pixmap() );    else	labelColumnPixmap->setText( "" );    editColumnText->blockSignals( FALSE );#ifndef QT_NO_SQL    if ( ::qt_cast<QDataTable*>(editTable) ) {	QString s = *fieldMap.find( listColumns->index( i ) );	if ( s.isEmpty() )	    comboFields->setCurrentItem( 0 );	else if ( comboFields->listBox()->findItem( s ) )	    comboFields->setCurrentItem( comboFields->listBox()->index( comboFields->listBox()->findItem( s ) ) );	else	    comboFields->lineEdit()->setText( s );    }#endif}void TableEditor::currentFieldChanged( const QString &s ){    if ( listColumns->currentItem() == -1 )	return;    fieldMap.remove( listColumns->currentItem() );    fieldMap.insert( listColumns->currentItem(), s );    editColumnText->blockSignals( TRUE ); //## necessary    QString newColText = s.mid(0,1).upper() + s.mid(1);    editColumnText->setText( newColText );    columnTextChanged( newColText );    editColumnText->blockSignals( FALSE );}void TableEditor::currentRowChanged( QListBoxItem *i ){    if ( !i )	return;    editRowText->blockSignals( TRUE );    editRowText->setText( i->text() );    if ( i->pixmap() )	labelRowPixmap->setPixmap( *i->pixmap() );    else	labelRowPixmap->setText( "" );    editRowText->blockSignals( FALSE );}void TableEditor::deleteColumnClicked(){    if ( listColumns->currentItem() == -1 )	return;#ifndef QT_NO_TABLE    table->setNumCols( table->numCols() - 1 );    delete listColumns->item( listColumns->currentItem() );    readColumns();    if ( listColumns->firstItem() ) {	listColumns->setCurrentItem( listColumns->firstItem() );	listColumns->setSelected( listColumns->firstItem(), TRUE );    }#endif}void TableEditor::deleteRowClicked(){    if ( listRows->currentItem() == -1 )	return;#ifndef QT_NO_TABLE    table->setNumRows( table->numRows() - 1 );    delete listRows->item( listRows->currentItem() );    readRows();    if ( listRows->firstItem() ) {	listRows->setCurrentItem( listRows->firstItem() );	listRows->setSelected( listRows->firstItem(), TRUE );    }#endif}void TableEditor::newColumnClicked(){#ifndef QT_NO_TABLE    table->setNumCols( table->numCols() + 1 );    QMap<QString, bool> m;    for ( int i = 0; i < table->numCols() - 1; ++i )	m.insert( table->horizontalHeader()->label( i ), TRUE );    int n = table->numCols() - 1;    QString t = QString::number( n );    while ( m.find( t ) != m.end() )	t = QString::number( ++n );    table->horizontalHeader()->setLabel( table->numCols() - 1, t );    listColumns->insertItem( t );    QListBoxItem *item = listColumns->item( listColumns->count() - 1 );    listColumns->setCurrentItem( item );    listColumns->setSelected( item, TRUE );#ifndef QT_NO_SQL    if ( ::qt_cast<QDataTable*>(editTable) ) {	comboFields->setFocus();    } else

⌨️ 快捷键说明

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