前面一节简单概述著名的MVC模式在Qt中的实现,现在我们从QListWidget开始了解Qt提供的一系列方便的item view类。

 

第一个要说的是QListWidget。这个类为我们展示一个List列表的视图。下面还是先看代码:

 

listwidget.h

 Qt学习之路(39): QListWidget_qt#ifndef LISTWIDGET_H 
 Qt学习之路(39): QListWidget_qt#define LISTWIDGET_H 
 Qt学习之路(39): QListWidget_qt 
 Qt学习之路(39): QListWidget_qt#include <QtGui> 
 Qt学习之路(39): QListWidget_qt 
 Qt学习之路(39): QListWidget_qtclass ListWidget : public QWidget 
 Qt学习之路(39): QListWidget_qt
 Qt学习之路(39): QListWidget_qtpublic
 Qt学习之路(39): QListWidget_qt        ListWidget(); 
 Qt学习之路(39): QListWidget_qt 
 Qt学习之路(39): QListWidget_qtprivate
 Qt学习之路(39): QListWidget_qt        QLabel *label; 
 Qt学习之路(39): QListWidget_qt        QListWidget *list; 
 Qt学习之路(39): QListWidget_qt}; 
 Qt学习之路(39): QListWidget_qt 
 Qt学习之路(39): QListWidget_qt#endif // LISTWIDGET_H

 

listwidget.cpp

 Qt学习之路(39): QListWidget_qt#include "listwidget.h" 
 Qt学习之路(39): QListWidget_qt 
 Qt学习之路(39): QListWidget_qtListWidget::ListWidget() 
 Qt学习之路(39): QListWidget_qt
 Qt学习之路(39): QListWidget_qt        label = new QLabel; 
 Qt学习之路(39): QListWidget_qt        label->setFixedWidth(70); 
 Qt学习之路(39): QListWidget_qt        list = new QListWidget; 
 Qt学习之路(39): QListWidget_qt        list->addItem(new QListWidgetItem(QIcon(":/p_w_picpaths/line.PNG"), tr("Line"))); 
 Qt学习之路(39): QListWidget_qt        list->addItem(new QListWidgetItem(QIcon(":/p_w_picpaths/rect.PNG"), tr("Rectangle"))); 
 Qt学习之路(39): QListWidget_qt        list->addItem(new QListWidgetItem(QIcon(":/p_w_picpaths/oval.PNG"), tr("Oval"))); 
 Qt学习之路(39): QListWidget_qt        list->addItem(new QListWidgetItem(QIcon(":/p_w_picpaths/tri.PNG"), tr("Triangle"))); 
 Qt学习之路(39): QListWidget_qt        QHBoxLayout *layout = new QHBoxLayout; 
 Qt学习之路(39): QListWidget_qt        layout->addWidget(label); 
 Qt学习之路(39): QListWidget_qt        layout->addWidget(list); 
 Qt学习之路(39): QListWidget_qt 
 Qt学习之路(39): QListWidget_qt        setLayout(layout); 
 Qt学习之路(39): QListWidget_qt 
 Qt学习之路(39): QListWidget_qt        connect(list, SIGNAL(currentTextChanged(QString)), label, SLOT(setText(QString))); 
 Qt学习之路(39): QListWidget_qt}

 

main.cpp

 Qt学习之路(39): QListWidget_qt#include <QtGui> 
 Qt学习之路(39): QListWidget_qt#include "listwidget.h" 
 Qt学习之路(39): QListWidget_qt 
 Qt学习之路(39): QListWidget_qtint main(int argc, char *argv[]) 
 Qt学习之路(39): QListWidget_qt
 Qt学习之路(39): QListWidget_qt        QApplication a(argc, argv); 
 Qt学习之路(39): QListWidget_qt        ListWidget lw; 
 Qt学习之路(39): QListWidget_qt        lw.resize(400, 200); 
 Qt学习之路(39): QListWidget_qt        lw.show(); 
 Qt学习之路(39): QListWidget_qt        return a.exec(); 
 Qt学习之路(39): QListWidget_qt}

 

一共三个文件,但是都比较清晰。我们先建立了一个ListWidget类,然后在main函数中将其显示出来。

 

ListWidget类中包含一个QLabel对象和一个QListWidget对象。创建这个QListWidget对象很简单,只需要使用new运算符创建出来,然后调用addItem()函数即可将item添加到这个对象中。我们添加的对象是QListWidgetItem的指针,它有四个重载的函数,我们使用的是其中的一个,它接受两个参数,第一个是QIcon引用类型,作为item的图标,第二个是QString类型,作为这个item后面的文字说明。当然,我们也可以使用insertItem()函数在特定的位置动态的增加item,具体使用请查阅API文档。最后,我们将这个QListWidget的currentTextChanged()信号同QLabel的setText()连接起来,这样,在我们点击item的时候,label上面的文字就可以改变了。

 

 Qt学习之路(39): QListWidget_qt_47

 

我们还可以设置viewModel这个参数,来确定使用不同的视图进行显示。比如,我们使用下面的语句:

 

 Qt学习之路(39): QListWidget_qtlist->setViewMode(QListView::IconMode);

 

再来看看程序界面吧!

 

 Qt学习之路(39): QListWidget_qt_49

本文出自 “豆子空间” 博客,请务必保留此出处http://devbean.blog.51cto.com/448512/251391