Qt學習之路(39): QListWidget

      本文出自 “豆子空間” 博客,原文出處http://devbean.blog.51cto.com/448512/251391

前面一節簡單概述著名的MVC模式在Qt中的實現,現在我們從QListWidget開始瞭解Qt提供的一系列方便的item view類。
 
第一個要說的是QListWidget。這個類爲我們展示一個List列表的視圖。下面還是先看代碼:
 
listwidget.h
#ifndef LISTWIDGET_H
#define LISTWIDGET_H

#include <QtGui>

class ListWidget : public QWidget
{
public:
        ListWidget();

private:
        QLabel *label;
        QListWidget *list;
};

#endif // LISTWIDGET_H
 
listwidget.cpp
#include "listwidget.h"

ListWidget::ListWidget()
{
        label = new QLabel;
        label->setFixedWidth(70);
        list = new QListWidget;
        list->addItem(new QListWidgetItem(QIcon(":/images/line.PNG"), tr("Line")));
        list->addItem(new QListWidgetItem(QIcon(":/images/rect.PNG"), tr("Rectangle")));
        list->addItem(new QListWidgetItem(QIcon(":/images/oval.PNG"), tr("Oval")));
        list->addItem(new QListWidgetItem(QIcon(":/images/tri.PNG"), tr("Triangle")));
        QHBoxLayout *layout = new QHBoxLayout;
        layout->addWidget(label);
        layout->addWidget(list);

        setLayout(layout);

        connect(list, SIGNAL(currentTextChanged(QString)), label, SLOT(setText(QString)));
}
 
main.cpp
#include <QtGui>
#include "listwidget.h"

int main(int argc, char *argv[])
{
        QApplication a(argc, argv);
        ListWidget lw;
        lw.resize(400, 200);
        lw.show();
        return a.exec();
}
 
一共三個文件,但是都比較清晰。我們先建立了一個ListWidget類,然後在main函數中將其顯示出來。
 
ListWidget類中包含一個QLabel對象和一個QListWidget對象。創建這個QListWidget對象很簡單,只需要使用new運算符創建出來,然後調用addItem()函數即可將item添加到這個對象中。我們添加的對象是QListWidgetItem的指針,它有四個重載的函數,我們使用的是其中的一個,它接受兩個參數,第一個是QIcon引用類型,作爲item的圖標,第二個是QString類型,作爲這個item後面的文字說明。當然,我們也可以使用insertItem()函數在特定的位置動態的增加item,具體使用請查閱API文檔。最後,我們將這個QListWidget的currentTextChanged()信號同QLabel的setText()連接起來,這樣,在我們點擊item的時候,label上面的文字就可以改變了。
 
 
我們還可以設置viewModel這個參數,來確定使用不同的視圖進行顯示。比如,我們使用下面的語句:
 
list->setViewMode(QListView::IconMode);
 
再來看看程序界面吧!
 


發佈了66 篇原創文章 · 獲贊 7 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章