📄 listviews-main-cpp.html
字号:
}// -----------------------------------------------------------------FolderListItem::FolderListItem( <a href="qlistview.html">QListView</a> *parent, Folder *f ) : <a href="qlistviewitem.html">QListViewItem</a>( parent ){ myFolder = f; <a href="qlistviewitem.html#808e84">setText</a>( 0, f->folderName() ); if ( myFolder->children() ) <a href=#32>insertSubFolders</a>( myFolder->children() );}FolderListItem::FolderListItem( FolderListItem *parent, Folder *f ) : <a href="qlistviewitem.html">QListViewItem</a>( parent ){ myFolder = f; <a href="qlistviewitem.html#808e84">setText</a>( 0, f->folderName() ); if ( myFolder->children() ) <a href=#32>insertSubFolders</a>( myFolder->children() );}void <a name="32"></a>FolderListItem::insertSubFolders( const QObjectList *lst ){ Folder *f; for ( f = ( Folder* )( ( QObjectList* )lst )->first(); f; f = ( Folder* )( ( QObjectList* )lst )->next() ) (void)new FolderListItem( this, f );}// -----------------------------------------------------------------MessageListItem::MessageListItem( <a href="qlistview.html">QListView</a> *parent, Message *m ) : <a href="qlistviewitem.html">QListViewItem</a>( parent ){ myMessage = m; <a href="qlistviewitem.html#808e84">setText</a>( 0, myMessage->header().sender() ); <a href="qlistviewitem.html#808e84">setText</a>( 1, myMessage->header().subject() ); <a href="qlistviewitem.html#808e84">setText</a>( 2, myMessage->header().datetime().toString() );}void <a name="31"></a>MessageListItem::paintCell( <a href="qpainter.html">QPainter</a> *p, const QColorGroup &cg, int column, int width, int alignment ){ <a href="qcolorgroup.html">QColorGroup</a> _cg( cg ); <a href="qcolor.html">QColor</a> c = _cg.<a href="qcolorgroup.html#ddea87">text</a>(); if ( myMessage->state() == Message::Unread ) _cg.<a href="qcolorgroup.html#73080d">setColor</a>( QColorGroup::Text, Qt::red ); <a href="qlistviewitem.html#0ab6b5">QListViewItem::paintCell</a>( p, _cg, column, width, alignment ); _cg.<a href="qcolorgroup.html#73080d">setColor</a>( QColorGroup::Text, c );}// -----------------------------------------------------------------ListViews::ListViews( <a href="qwidget.html">QWidget</a> *parent, const char *name ) : <a href="qsplitter.html">QSplitter</a>( Qt::Horizontal, parent, name ){ lstFolders.setAutoDelete( TRUE ); folders = new <a href="qlistview.html">QListView</a>( this ); folders->header()->setClickEnabled( FALSE ); folders->addColumn( "Folder" ); <a href=#25>initFolders</a>(); <a href=#27>setupFolders</a>(); folders->setRootIsDecorated( TRUE ); <a href="qsplitter.html#33bf83">setResizeMode</a>( folders, QSplitter::KeepSize ); <a href="qsplitter.html">QSplitter</a> *vsplitter = new <a href="qsplitter.html">QSplitter</a>( Qt::Vertical, this ); messages = new <a href="qlistview.html">QListView</a>( vsplitter ); messages->addColumn( "Sender" ); messages->addColumn( "Subject" ); messages->addColumn( "Date" ); messages->setColumnAlignment( 1, Qt::AlignRight ); messages->setAllColumnsShowFocus( TRUE ); messages->setShowSortIndicator( TRUE ); menu = new <a href="qpopupmenu.html">QPopupMenu</a>( messages ); for( int i = 1; i <= 10; i++ ) menu->insertItem( <a href="qstring.html">QString</a>( "Context Item %1" ).arg( i ) ); <a href="qobject.html#fbde73">connect</a>(messages, SIGNAL( rightButtonPressed( <a href="qlistviewitem.html">QListViewItem</a> *, const QPoint& , int ) ), this, SLOT( <a href=#28>slotRMB</a>( <a href="qlistviewitem.html">QListViewItem</a> *, const QPoint &, int ) ) ); vsplitter-><a href="qsplitter.html#33bf83">setResizeMode</a>( messages, QSplitter::KeepSize ); message = new <a href="qlabel.html">QLabel</a>( vsplitter ); message->setAlignment( Qt::AlignTop ); message->setBackgroundMode( PaletteBase ); <a href="qobject.html#fbde73">connect</a>( folders, SIGNAL( selectionChanged( <a href="qlistviewitem.html">QListViewItem</a>* ) ), this, SLOT( <a href=#29>slotFolderChanged</a>( <a href="qlistviewitem.html">QListViewItem</a>* ) ) ); <a href="qobject.html#fbde73">connect</a>( messages, SIGNAL( selectionChanged() ), this, SLOT( <a href=#30>slotMessageChanged</a>() ) ); <a href="qobject.html#fbde73">connect</a>( messages, SIGNAL( currentChanged( <a href="qlistviewitem.html">QListViewItem</a> * ) ), this, SLOT( <a href=#30>slotMessageChanged</a>() ) ); messages->setSelectionMode( QListView::Extended ); // some preparations folders->firstChild()->setOpen( TRUE ); folders->firstChild()->firstChild()->setOpen( TRUE ); folders->setCurrentItem( folders->firstChild()->firstChild()->firstChild() ); folders->setSelected( folders->firstChild()->firstChild()->firstChild(), TRUE ); messages->setSelected( messages->firstChild(), TRUE ); messages->setCurrentItem( messages->firstChild() ); message->setMargin( 5 ); <a href="qvaluelist.html">QValueList</a><int> lst; lst.<a href="qvaluelist.html#d68b11">append</a>( 170 ); <a href="qsplitter.html#8fd8cf">setSizes</a>( lst );}void <a name="25"></a>ListViews::initFolders(){ unsigned int mcount = 1; for ( unsigned int i = 1; i < 20; i++ ) { <a href="qstring.html">QString</a> str; str = QString( "Folder %1" ).arg( i ); Folder *f = new Folder( 0, str ); for ( unsigned int j = 1; j < 5; j++ ) { <a href="qstring.html">QString</a> str2; str2 = QString( "Sub Folder %1" ).arg( j ); Folder *f2 = new Folder( f, str2 ); for ( unsigned int k = 1; k < 3; k++ ) { <a href="qstring.html">QString</a> str3; str3 = QString( "Sub Sub Folder %1" ).arg( k ); Folder *f3 = new Folder( f2, str3 ); <a href=#26>initFolder</a>( f3, mcount ); } } lstFolders.append( f ); }}void <a name="26"></a>ListViews::initFolder( Folder *folder, unsigned int &count ){ for ( unsigned int i = 0; i < 15; i++, count++ ) { <a href="qstring.html">QString</a> str; str = QString( "Message %1 " ).arg( count ); <a href="qdatetime.html">QDateTime</a> dt = QDateTime::currentDateTime(); dt = dt.<a href="qdatetime.html#a8711a">addSecs</a>( 60 * count ); MessageHeader mh( "Trolltech <info@trolltech.com> ", str, dt ); <a href="qstring.html">QString</a> body; body = QString( "This is the message number %1 of this application, \n" "which shows how to use QListViews, QListViewItems, \n" "QSplitters and so on. The code should show how easy\n" "this can be done in Qt." ).arg( count ); Message *msg = new Message( mh, body ); folder->addMessage( msg ); }}void <a name="27"></a>ListViews::setupFolders(){ folders->clear(); for ( Folder* f = lstFolders.first(); f; f = lstFolders.next() ) (void)new FolderListItem( folders, f );}void <a name="28"></a>ListViews::slotRMB( <a href="qlistviewitem.html">QListViewItem</a>* Item, const QPoint & point, int ){ if( Item ) menu->popup( point );}void <a name="29"></a>ListViews::slotFolderChanged( <a href="qlistviewitem.html">QListViewItem</a> *i ){ if ( !i ) return; messages->clear(); message->setText( "" ); FolderListItem *item = ( FolderListItem* )i; for ( Message* msg = item->folder()->firstMessage(); msg; msg = item->folder()->nextMessage() ) (void)new MessageListItem( messages, msg );}void <a name="30"></a>ListViews::slotMessageChanged(){ <a href="qlistviewitem.html">QListViewItem</a> *i = messages->currentItem(); if ( !i ) return; if ( !i-><a href="qlistviewitem.html#35710b">isSelected</a>() ) { message->setText( "" ); return; } MessageListItem *item = ( MessageListItem* )i; Message *msg = item->message(); <a href="qstring.html">QString</a> text; <a href="qstring.html">QString</a> tmp = msg->header().sender(); tmp = tmp.<a href="qstring.html#034e6e">replace</a>( <a href="qregexp.html">QRegExp</a>( "[<]" ), "&lt;" ); tmp = tmp.<a href="qstring.html#034e6e">replace</a>( <a href="qregexp.html">QRegExp</a>( "[>]" ), "&gt;" ); text = QString( "<b><i>From:</i></b> <a href=\"mailto:info@trolltech.com\">%1</a><br>" "<b><i>Subject:</i></b> <big><big><b>%2</b></big></big><br>" "<b><i>Date:</i></b> %3<br><br>" "%4" ). arg( tmp ).arg( msg->header().subject() ). arg( msg->header().datetime().toString() ).arg( msg->body() ); message->setText( text ); msg->setState( Message::Read );}</pre> <hr> Main:<pre>/****************************************************************************** $Id: qt/examples/listviews/main.cpp 2.3.8 edited 2004-05-12 $**** 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 "listviews.h"#include <<a name="qapplication.h"></a><a href="qapplication-h.html">qapplication.h</a>>int main( int argc, char **argv ){ <a name="QApplication"></a><a href="qapplication.html">QApplication</a> a( argc, argv ); ListViews listViews; listViews.<a name="resize"></a><a href="qwidget.html#ff9d07">resize</a>( 640, 480 ); listViews.<a name="setCaption"></a><a href="qwidget.html#d6a291">setCaption</a>( "Qt Example - Listview" ); a.<a name="setMainWidget"></a><a href="qapplication.html#7ad759">setMainWidget</a>( &listViews ); listViews.<a name="show"></a><a href="qwidget.html#200ee5">show</a>(); return a.<a name="exec"></a><a href="qapplication.html#84c7bf">exec</a>();}</pre><p><address><hr><div align="center"><table width="100%" cellspacing="0" border="0"><tr><td>Copyright
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -