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

📄 propertyeditor.cpp

📁 Trolltech公司发布的基于C++图形开发环境
💻 CPP
📖 第 1 页 / 共 5 页
字号:
    else if ( child->name() == tr( "Strikeout" ) )	f.setStrikeOut( child->value().toBool() );    setValue( f );    notifyValueChange();}// --------------------------------------------------------------PropertyDatabaseItem::PropertyDatabaseItem( PropertyList *l, PropertyItem *after, PropertyItem *prop,					    const QString &propName, bool wField )    : PropertyItem( l, after, prop, propName ), withField( wField ){    box = new QHBox( listview->viewport() );    box->hide();    lined = new QLineEdit( box );    button = new QPushButton( "...", box );    setupStyle( button );    button->setFixedWidth( 20 );    box->setFrameStyle( QFrame::StyledPanel | QFrame::Sunken );    box->setLineWidth( 2 );    lined->setFrame( FALSE );    lined->setReadOnly( TRUE );    box->setFocusProxy( lined );    box->installEventFilter( listview );    lined->installEventFilter( listview );    button->installEventFilter( listview );}void PropertyDatabaseItem::createChildren(){    PropertyItem *i = this;    i = new PropertyListItem( listview, i, this, tr( "Connection" ), TRUE );    addChild( i );    i = new PropertyListItem( listview, i, this, tr( "Table" ), TRUE );    addChild( i );    if ( withField ) {	i = new PropertyListItem( listview, i, this, tr( "Field" ), TRUE );	addChild( i );    }}void PropertyDatabaseItem::initChildren(){#ifndef QT_NO_SQL    PropertyItem *item = 0;    QStringList lst = value().toStringList();    QString conn, table;    for ( int i = 0; i < childCount(); ++i ) {	item = PropertyItem::child( i );	if ( item->name() == tr( "Connection" ) ) {	    QStringList cl = listview->propertyEditor()->formWindow()->project()->databaseConnectionList();	    if ( !cl.isEmpty() )		item->setValue( cl );	    else if ( lst.count() > 0 )		item->setValue( QStringList( lst[ 0 ] ) );	    else if ( withField )		item->setValue( QStringList( MetaDataBase::fakeProperty( listview->propertyEditor()->formWindow()->mainContainer(),									 "database" ).toStringList()[ 0 ] ) );	    if ( lst.count() > 0 && !lst[ 0 ].isEmpty() )		item->setCurrentItem( lst[ 0 ] );	    else if ( !isChanged() && withField )		item->setCurrentItem( MetaDataBase::fakeProperty( listview->propertyEditor()->formWindow()->mainContainer(),								  "database" ).toStringList()[ 0 ] );	    else		item->setCurrentItem( 0 );	    conn = item->currentItem();	} else if ( item->name() == tr( "Table" ) ) {	    QStringList cl = listview->propertyEditor()->formWindow()->project()->databaseTableList( conn );	    if ( !cl.isEmpty() )		item->setValue( cl );	    else if ( lst.count() > 1 )		item->setValue( QStringList( lst[ 1 ] ) );	    else if ( withField ) {		QStringList fakeLst = MetaDataBase::fakeProperty( listview->propertyEditor()->formWindow()->mainContainer(), "database" ).toStringList();		if ( fakeLst.count() > 1 )		    item->setValue( fakeLst[ 1 ] );	    }	    if ( lst.count() > 1 && !lst[ 1 ].isEmpty() )		item->setCurrentItem( lst[ 1 ] );	    else if ( !isChanged() && withField ) {		QStringList fakeLst = MetaDataBase::fakeProperty( listview->propertyEditor()->formWindow()->mainContainer(), "database" ).toStringList();		if ( fakeLst.count() > 1 )		    item->setCurrentItem( fakeLst[ 1 ] );	        else	            item->setCurrentItem( 0 );	    } else		item->setCurrentItem( 0 );	    table = item->currentItem();	} else if ( item->name() == tr( "Field" ) ) {	    QStringList cl = listview->propertyEditor()->formWindow()->project()->databaseFieldList( conn, table );	    if ( !cl.isEmpty() )		item->setValue( cl );	    else if ( lst.count() > 2 )		item->setValue( QStringList( lst[ 2 ] ) );	    if ( lst.count() > 2 && !lst[ 2 ].isEmpty() )		item->setCurrentItem( lst[ 2 ] );	    else		item->setCurrentItem( 0 );	}    }#endif}PropertyDatabaseItem::~PropertyDatabaseItem(){    delete (QHBox*)box;}void PropertyDatabaseItem::showEditor(){    PropertyItem::showEditor();    placeEditor( box );    if ( !box->isVisible() || !lined->hasFocus() ) {	box->show();	setFocus( lined );    }}void PropertyDatabaseItem::hideEditor(){    PropertyItem::hideEditor();    box->hide();}void PropertyDatabaseItem::setValue( const QVariant &v ){    if ( value() == v )	return;    QStringList lst = v.toStringList();    QString s = lst.join( "." );    setText( 1, s );    lined->setText( s );    PropertyItem::setValue( v );}bool PropertyDatabaseItem::hasSubItems() const{    return TRUE;}void PropertyDatabaseItem::childValueChanged( PropertyItem *c ){#ifndef QT_NO_SQL    QStringList lst;    lst << ( (PropertyListItem*)PropertyItem::child( 0 ) )->currentItem()	<< ( (PropertyListItem*)PropertyItem::child( 1 ) )->currentItem();    if ( withField )	lst << ( (PropertyListItem*)PropertyItem::child( 2 ) )->currentItem();    if ( c == PropertyItem::child( 0 ) ) { // if the connection changed	lst[ 0 ] = ( (PropertyListItem*)c )->currentItem();	PropertyItem::child( 1 )->setValue( listview->propertyEditor()->formWindow()->project()->databaseTableList( lst[ 0 ] ) );	if ( withField )	    PropertyItem::child( 2 )->setValue( listview->propertyEditor()->formWindow()->project()->databaseFieldList( lst[ 0 ], lst[ 1 ] ) );    } else if ( withField && c == PropertyItem::child( 1 ) ) { // if the table changed	lst[ 1 ] = ( (PropertyListItem*)c )->currentItem();	if ( withField )	    PropertyItem::child( 2 )->setValue( listview->propertyEditor()->formWindow()->project()->databaseFieldList( lst[ 0 ], lst[ 1 ] ) );    }    lst.clear();    lst << ( (PropertyListItem*)PropertyItem::child( 0 ) )->currentItem()	<< ( (PropertyListItem*)PropertyItem::child( 1 ) )->currentItem();    if ( withField )	lst << ( (PropertyListItem*)PropertyItem::child( 2 ) )->currentItem();    setValue( lst );    notifyValueChange();#else    Q_UNUSED( c );#endif}// --------------------------------------------------------------PropertySizePolicyItem::PropertySizePolicyItem( PropertyList *l, PropertyItem *after, PropertyItem *prop,						const QString &propName )    : PropertyItem( l, after, prop, propName ){    lin = 0;}QLineEdit *PropertySizePolicyItem::lined(){    if ( lin )	return lin;    lin = new QLineEdit( listview->viewport() );    lin->hide();    lin->setReadOnly( TRUE );    return lin;}void PropertySizePolicyItem::createChildren(){    QStringList lst;    lst << "Fixed" << "Minimum" << "Maximum" << "Preferred" << "MinimumExpanding" << "Expanding" << "Ignored";    PropertyItem *i = this;    i = new PropertyListItem( listview, i, this, tr( "hSizeType" ), FALSE );    i->setValue( lst );    addChild( i );    i = new PropertyListItem( listview, i, this, tr( "vSizeType" ), FALSE );    i->setValue( lst );    addChild( i );    i = new PropertyIntItem( listview, i, this, tr( "horizontalStretch" ), TRUE );    addChild( i );    i = new PropertyIntItem( listview, i, this, tr( "verticalStretch" ), TRUE );    addChild( i );}void PropertySizePolicyItem::initChildren(){    PropertyItem *item = 0;    QSizePolicy sp = val.toSizePolicy();    for ( int i = 0; i < childCount(); ++i ) {	item = PropertyItem::child( i );	if ( item->name() == tr( "hSizeType" ) )	    ( (PropertyListItem*)item )->setCurrentItem( size_type_to_int( sp.horData() ) );	else if ( item->name() == tr( "vSizeType" ) )	    ( (PropertyListItem*)item )->setCurrentItem( size_type_to_int( sp.verData() ) );	else if ( item->name() == tr( "horizontalStretch" ) )	    ( (PropertyIntItem*)item )->setValue( sp.horStretch() );	else if ( item->name() == tr( "verticalStretch" ) )	    ( (PropertyIntItem*)item )->setValue( sp.verStretch() );    }}PropertySizePolicyItem::~PropertySizePolicyItem(){    delete (QLineEdit*)lin;}void PropertySizePolicyItem::showEditor(){    PropertyItem::showEditor();    placeEditor( lined() );    if ( !lined()->isVisible() || !lined()->hasFocus() ) {	lined()->show();	listView()->viewport()->setFocus();    }}void PropertySizePolicyItem::hideEditor(){    PropertyItem::hideEditor();    lined()->hide();}void PropertySizePolicyItem::setValue( const QVariant &v ){    if ( value() == v )	return;    QString s = tr( "%1/%2/%2/%2" );    s = s.arg( size_type_to_string( v.toSizePolicy().horData() ) ).	arg( size_type_to_string( v.toSizePolicy().verData() ) ).	arg( v.toSizePolicy().horStretch() ).	arg( v.toSizePolicy().verStretch() );    setText( 1, s );    lined()->setText( s );    PropertyItem::setValue( v );}void PropertySizePolicyItem::childValueChanged( PropertyItem *child ){    QSizePolicy sp = val.toSizePolicy();    if ( child->name() == tr( "hSizeType" ) )	sp.setHorData( int_to_size_type( ( ( PropertyListItem*)child )->currentIntItem() ) );    else if ( child->name() == tr( "vSizeType" ) )	sp.setVerData( int_to_size_type( ( ( PropertyListItem*)child )->currentIntItem() ) );    else if ( child->name() == tr( "horizontalStretch" ) )	sp.setHorStretch( ( ( PropertyIntItem*)child )->value().toInt() );    else if ( child->name() == tr( "verticalStretch" ) )	sp.setVerStretch( ( ( PropertyIntItem*)child )->value().toInt() );    setValue( sp );    notifyValueChange();}bool PropertySizePolicyItem::hasSubItems() const{    return TRUE;}// --------------------------------------------------------------PropertyPaletteItem::PropertyPaletteItem( PropertyList *l, PropertyItem *after, PropertyItem *prop,				      const QString &propName )    : PropertyItem( l, after, prop, propName ){    box = new QHBox( listview->viewport() );    box->hide();    palettePrev = new QLabel( box );    button = new QPushButton( "...", box );    setupStyle( button );    button->setFixedWidth( 20 );    box->setFrameStyle( QFrame::StyledPanel | QFrame::Sunken );    box->setLineWidth( 2 );    palettePrev->setFrameStyle( QFrame::NoFrame );    box->installEventFilter( listview );    connect( button, SIGNAL( clicked() ),	     this, SLOT( getPalette() ) );}PropertyPaletteItem::~PropertyPaletteItem(){    delete (QHBox*)box;}void PropertyPaletteItem::showEditor(){    PropertyItem::showEditor();    placeEditor( box );    if ( !box->isVisible() ) {	box->show();	listView()->viewport()->setFocus();    }}void PropertyPaletteItem::hideEditor(){    PropertyItem::hideEditor();    box->hide();}void PropertyPaletteItem::setValue( const QVariant &v ){    QString s;    palettePrev->setPalette( v.toPalette() );    PropertyItem::setValue( v );    repaint();}void PropertyPaletteItem::getPalette(){    if ( !listview->propertyEditor()->widget()->isWidgetType() )	return;    bool ok = FALSE;    QWidget *w = (QWidget*)listview->propertyEditor()->widget();    if ( ::qt_cast<QScrollView*>(w) )	w = ( (QScrollView*)w )->viewport();    QPalette pal = PaletteEditor::getPalette( &ok, val.toPalette(),#if defined(QT_NON_COMMERCIAL)					      w->backgroundMode(), listview->topLevelWidget(),#else					      w->backgroundMode(), listview,#endif 					      "choose_palette", listview->propertyEditor()->formWindow() );    if ( !ok )	return;    setValue( pal );    notifyValueChange();}bool PropertyPaletteItem::hasCustomContents() const{    return TRUE;}void PropertyPaletteItem::drawCustomContents( QPainter *p, const QRect &r ){    QPalette pal( value().toPalette() );    p->save();    p->setClipRect( QRect( QPoint( (int)(p->worldMatrix().dx() + r.x()),				   (int)(p->worldMatrix().dy() + r.y()) ),			   r.size() ) );    QRect r2( r );    r2.setX( r2.x() + 2 );    r2.setY( r2.y() + 2 );    r2.setWidth( r2.width() - 3 );    r2.setHeight( r2.height() - 3 );    p->setPen( QPen( black, 1 ) );    p->setBrush( pal.active().background() );    p->drawRect( r2 );    p->restore();}// --------------------------------------------------------------PropertyCursorItem::PropertyCursorItem( PropertyList *l, PropertyItem *after, PropertyItem *prop,					const QString &propName )    : PropertyItem( l, after, prop, propName ){    comb = 0;}QComboBox *PropertyCursorItem::combo(){    if ( comb )	return comb;    comb = new QComboBox( FALSE, listview->viewport() );    comb->hide();    QBitmap cur;    comb->insertItem( QPixmap::fromMimeSource( "designer_arrow.png" ), tr("Arrow"), QObject::ArrowCursor);    comb->insertItem( QPixmap::fromMimeSource( "designer_uparrow.png" ), tr("Up-Arrow"), QObject::UpArrowCursor );    comb->insertItem( QPixmap::fromMimeSource( "designer_cross.png" ), tr("Cross"), QObject::CrossCursor );    comb->insertItem( QPixmap::fromMimeSource( "designer_wait.png" ), tr("Waiting"), QObject::WaitCursor );    comb->insertItem( QPixmap::fromMimeSource( "designer_ibeam.png" ), tr("iBeam"), QObject::IbeamCursor );    comb->insertItem( QPixmap::fromMimeSource( "designer_sizev.png" ), tr("Size Vertical"), QObject::SizeVerCursor );    comb->insertItem( QPixmap::fromMimeSource( "designer_sizeh.png" ), tr("Size Horizontal"), QObject::SizeHorCursor );    comb->insertItem( QPixmap::fromMimeSource( "designer_sizef.png" ), tr("Size Slash"), QObject::SizeBDiagCursor );    comb->insertItem( QPixmap::fromMimeSource( "designer_sizeb.png" ), tr("Size Backslash"), QObject::SizeFDiagCursor );    comb->insertItem( QPixmap::fromMimeSource( "designer_sizeall.png" ), tr("Size All"), QObject::SizeAllCursor );    cur = QBitmap( 25, 25, 1 );    cur.setMask( cur );    comb->insertItem( cur, tr("Blank"), QObject::BlankCursor );    comb->insertItem( QPixmap::fromMimeSource( "designer_vsplit.png" ), tr("Split Vertical"), QObject::SplitVCursor );    comb->insertItem( QPixmap::fromMimeSource( "designer_hsplit.png" ), tr("Split Horizontal"), QObject::SplitHCursor );    comb->insertItem( QPixmap::fromMimeSource( "designer_hand.png" ), tr("Pointing Hand"), QObject::PointingHandCursor );    comb->insertItem( QPixmap::fromMimeSource( "designer_no.png" ), tr("Forbidden"), QObject::ForbiddenCursor );    connect( comb, SIGNAL( activated( int ) ),	     this, SLOT( setValue() ) );    comb->installEventFilter( listview );    return comb;}PropertyCursorItem::~PropertyCursorItem(){    delete (QComboBox*)comb;}void PropertyCursorItem::showEditor(){    PropertyItem::showEditor();    if ( !comb ) {	combo()->blockSignals( TRUE );	combo()->setCurrentItem( (int)value().toCursor().shape() );	combo()->blockSignals( FALSE );    }    placeEditor( combo() );    if ( !combo()->isVisible() || !combo()->hasFocus() ) {	combo()->show();	setFocus( combo() );    }}void PropertyCursorItem::hideEditor(){    PropertyItem::hideEditor();    combo()->hide();}void PropertyCursorItem::setValue( const QVariant &v ){    if ( ( !hasSubItems() || !isOpen() )	 && value() == v )	return;    combo()->blockSignals( TRUE );    combo()->setCurrentItem( (int)v.toCursor().shape() );    combo()->blockSignals( FALSE );    setText( 1, combo()->currentText() );    PropertyItem::setValue( v );}void PropertyCursorItem::setValue(){    if ( !comb )	return;    if ( QVariant( QCursor( combo()->currentItem() ) ) == val )	return;    setText( 1, combo()->currentText() );    PropertyItem::setValue( QCursor( combo()->currentItem() ) );    notifyValueChange();}// --------------------------------------------------------------PropertyKeysequenceItem::PropertyKeysequenceItem( PropertyList *l,						  PropertyItem *after,						  PropertyItem *prop,						  const QString &propName )    : PropertyItem( l, after, prop, propName ),      k1( 0 ), k2( 0 ), k3( 0 ), k4( 0 ), num( 0 ), mouseEnter( FALSE ){    box = new QHBox( listview->viewport() );    box->hide();    sequence = new QLineEdit( box );    connect( sequence, SIGNAL(textChanged( const QString & )),	     this, SLOT(setValue()) );    sequence->installEventFilter( this );}PropertyKeysequenceItem::~PropertyKeysequenceItem(){    delete (QHBox*)box;}

⌨️ 快捷键说明

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