📄 listvieweditorimpl.cpp
字号:
itemText->setEnabled( TRUE ); itemChoosePixmap->setEnabled( TRUE ); itemDeletePixmap->setEnabled( i->pixmap( itemColumn->value() ) && !i->pixmap( itemColumn->value() )->isNull() ); itemColumn->setEnabled( TRUE ); displayItem( i, itemColumn->value() );}void ListViewEditor::displayItem( QListViewItem *i, int col ){ itemText->blockSignals( TRUE ); itemText->setText( i->text( col ) ); itemText->blockSignals( FALSE ); itemPixmap->blockSignals( TRUE ); if ( i->pixmap( col ) ) itemPixmap->setPixmap( *i->pixmap( col ) ); else itemPixmap->setText( "" ); itemPixmap->blockSignals( FALSE );}void ListViewEditor::itemColChanged( int col ){ QListViewItem *i = itemsPreview->currentItem(); if ( !i ) return; displayItem( i, col ); itemDeletePixmap->setEnabled( i->pixmap( col ) && !i->pixmap( col )->isNull() );}void ListViewEditor::itemDeleteClicked(){ QListViewItem *i = itemsPreview->currentItem(); if ( !i ) return; delete i; if ( itemsPreview->firstChild() ) { itemsPreview->setCurrentItem( itemsPreview->firstChild() ); itemsPreview->setSelected( itemsPreview->firstChild(), TRUE ); }}void ListViewEditor::itemDownClicked(){ QListViewItem *i = itemsPreview->currentItem(); if ( !i ) return; QListViewItemIterator it( i ); QListViewItem *parent = i->parent(); it++; while ( it.current() ) { if ( it.current()->parent() == parent ) break; it++; } if ( !it.current() ) return; QListViewItem *other = it.current(); i->moveItem( other );}void ListViewEditor::itemNewClicked(){ QListViewItem *item = new QListViewItem( itemsPreview ); item->setText( 0, "Item" ); item->setRenameEnabled( 0, TRUE ); itemsPreview->setCurrentItem( item ); itemsPreview->setSelected( item, TRUE ); itemText->setFocus(); itemText->selectAll();}void ListViewEditor::itemNewSubClicked(){ QListViewItem *parent = itemsPreview->currentItem(); QListViewItem *item = 0; if ( parent ) { item = new QListViewItem( parent ); parent->setOpen( TRUE ); } else { item = new QListViewItem( itemsPreview ); } item->setText( 0, "Subitem" ); item->setRenameEnabled( 0, TRUE ); itemsPreview->setCurrentItem( item ); itemsPreview->setSelected( item, TRUE );}void ListViewEditor::itemPixmapChoosen(){ QListViewItem *i = itemsPreview->currentItem(); if ( !i ) return; QPixmap pix; if ( itemPixmap->pixmap() ) pix = qChoosePixmap( this, formwindow, *itemPixmap->pixmap() ); else pix = qChoosePixmap( this, formwindow, QPixmap() ); if ( pix.isNull() ) return; i->setPixmap( itemColumn->value(), QPixmap( pix ) ); itemPixmap->setPixmap( pix ); itemDeletePixmap->setEnabled( TRUE );}void ListViewEditor::itemPixmapDeleted(){ QListViewItem *i = itemsPreview->currentItem(); if ( !i ) return; i->setPixmap( itemColumn->value(), QPixmap() ); itemPixmap->setText( "" ); itemDeletePixmap->setEnabled( FALSE );}void ListViewEditor::itemTextChanged( const QString &txt ){ QListViewItem *i = itemsPreview->currentItem(); if ( !i ) return; i->setText( itemColumn->value(), txt );}void ListViewEditor::itemUpClicked(){ QListViewItem *i = itemsPreview->currentItem(); if ( !i ) return; QListViewItemIterator it( i ); QListViewItem *parent = i->parent(); --it; while ( it.current() ) { if ( it.current()->parent() == parent ) break; --it; } if ( !it.current() ) return; QListViewItem *other = it.current(); other->moveItem( i );}void ListViewEditor::itemRightClicked(){ QListViewItem *i = itemsPreview->currentItem(); if ( !i ) return; QListViewItemIterator it( i ); QListViewItem *parent = i->parent(); parent = parent ? parent->firstChild() : itemsPreview->firstChild(); if ( !parent ) return; it++; while ( it.current() ) { if ( it.current()->parent() == parent ) break; it++; } if ( !it.current() ) return; QListViewItem *other = it.current(); for ( int c = 0; c < itemsPreview->columns(); ++c ) { QString s = i->text( c ); i->setText( c, other->text( c ) ); other->setText( c, s ); QPixmap pix; if ( i->pixmap( c ) ) pix = *i->pixmap( c ); if ( other->pixmap( c ) ) i->setPixmap( c, *other->pixmap( c ) ); else i->setPixmap( c, QPixmap() ); other->setPixmap( c, pix ); } itemsPreview->setCurrentItem( other ); itemsPreview->setSelected( other, TRUE );}void ListViewEditor::itemLeftClicked(){ QListViewItem *i = itemsPreview->currentItem(); if ( !i ) return; QListViewItemIterator it( i ); QListViewItem *parent = i->parent(); if ( !parent ) return; parent = parent->parent(); --it; while ( it.current() ) { if ( it.current()->parent() == parent ) break; --it; } if ( !it.current() ) return; QListViewItem *other = it.current(); for ( int c = 0; c < itemsPreview->columns(); ++c ) { QString s = i->text( c ); i->setText( c, other->text( c ) ); other->setText( c, s ); QPixmap pix; if ( i->pixmap( c ) ) pix = *i->pixmap( c ); if ( other->pixmap( c ) ) i->setPixmap( c, *other->pixmap( c ) ); else i->setPixmap( c, QPixmap() ); other->setPixmap( c, pix ); } itemsPreview->setCurrentItem( other ); itemsPreview->setSelected( other, TRUE );}void ListViewEditor::setupColumns(){ QHeader *h = listview->header(); for ( int i = 0; i < (int)h->count(); ++i ) { Column col; col.text = h->label( i ); col.pixmap = QPixmap(); if ( h->iconSet( i ) ) col.pixmap = h->iconSet( i )->pixmap(); col.clickable = h->isClickEnabled( i ); col.resizable = h->isResizeEnabled( i ); if ( !col.pixmap.isNull() ) col.item = new QListBoxPixmap( colPreview, col.pixmap, col.text ); else col.item = new QListBoxText( colPreview, col.text ); columns.append( col ); } colText->setEnabled( FALSE ); colPixmap->setEnabled( FALSE ); colClickable->setEnabled( FALSE ); colResizable->setEnabled( FALSE ); if ( colPreview->firstItem() ) colPreview->setCurrentItem( colPreview->firstItem() ); numColumns = colPreview->count();}void ListViewEditor::setupItems(){ itemColumn->setMinValue( 0 ); itemColumn->setMaxValue( QMAX( numColumns - 1, 0 ) ); int i = 0; QHeader *header = itemsPreview->header(); for ( QListBoxItem *item = colPreview->firstItem(); item; item = item->next() ) { Column *col = findColumn( item ); if ( !col ) continue; if ( i >= itemsPreview->columns() ) itemsPreview->addColumn( col->text ); header->setLabel( i, col->pixmap, col->text ); header->setResizeEnabled( col->resizable, i ); header->setClickEnabled( col->clickable, i ); ++i; } while ( itemsPreview->columns() > i ) itemsPreview->removeColumn( i ); itemColumn->setValue( QMIN( numColumns - 1, itemColumn->value() ) );}ListViewEditor::Column *ListViewEditor::findColumn( QListBoxItem *i ){ if ( !i ) return 0; for ( QValueList<Column>::Iterator it = columns.begin(); it != columns.end(); ++it ) { if ( ( *it ).item == i ) return &( *it ); } return 0;}void ListViewEditor::initTabPage( const QString &page ){ numColumns = colPreview->count(); if ( page == tr( "&Items" ) ) { setupItems(); if ( numColumns == 0 ) { itemNew->setEnabled( FALSE ); itemNewSub->setEnabled( FALSE ); itemText->setEnabled( FALSE ); itemChoosePixmap->setEnabled( FALSE ); itemDeletePixmap->setEnabled( FALSE ); itemColumn->setEnabled( FALSE ); } else { itemNew->setEnabled( TRUE ); itemNewSub->setEnabled( TRUE ); } }}void ListViewEditor::emitItemRenamed( QListViewItem *, int, const QString & text ){ emit itemRenamed( text ); // Relay signal ( to QLineEdit )}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -