《Qt編程的藝術》——8.2 顯示目錄層次

現在我們準備通過創建一個小程序來獲得關於InterView的實踐經驗,使用QDirModel和拿來就用的view,來在四個不同的view中顯示主目錄,如圖8.5所示。在代碼裏,除了例行公事先實例化一個QApplication對象外,我們再實例化一個QDirModel。
 
在這裏,你要不得不再一次記住,作爲一個例外,我們在堆(heap)上分配model,而不是在棧(stack)上,因爲我們的整個代碼在main()方法裏面(見31頁上的1.2.2)。
 

之後,我們指定在view操作之下的目錄。因爲所有的view相互獨立地訪問model,我們也必須分別設定它們的index。總之,我們只需要顯示控件(widget)然後開始事件循環。程序的代碼如下所示:
 
// diransichten/main.cpp
#include <QtGui>
int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    QDirModel dirModel;
    QWidget w;
    w.setWindowTitle(QObject::tr("Four directory views using one model"));
    QGridLayout *lay =new QGridLayout(&w);
    QListView *lv =new QListView;
    lay->addWidget(lv,0, 0);
    lv->setModel(&dirModel);
    QListView *lvi=new QListView;
    lay->addWidget(lvi, 0,1);
    lvi->setViewMode(QListView::IconMode);
    lvi->setModel(&dirModel);
    QTreeView *trv =new QTreeView;
    lay->addWidget(trv,1, 0);
    trv->setModel(&dirModel);
    QTableView *tav =new QTableView;
    tav->setModel(&dirModel);
    lay->addWidget(tav,1,1);
    QModelIndex cwdIndex =dirModel.index(QDir::currentPath());
    lv->setRootIndex(cwdIndex);
    lvi->setRootIndex(cwdIndex);
    trv->setRootIndex(cwdIndex);
    tav->setRootIndex(cwdIndex);
    w.show();
    return app.exec();
}


 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章