W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
前面一節(jié)簡單概述著名的 MVC 模式在 Qt 中的實現(xiàn),現(xiàn)在我們從 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 函數(shù)中將其顯示出來。
ListWidget 類中包含一個 QLabel 對象和一個 QListWidget 對象。創(chuàng)建這個 QListWidget 對象很簡單,只需要使用new運算符創(chuàng)建出來,然后調(diào)用 addItem()函數(shù)即可將 item 添加到這個對象中。我們添加的對象是 QListWidgetItem 的指針,它有四個重載的函數(shù),我們使用的是其中的一個,它接受兩個參數(shù),第一個是 QIcon 引用類型,作為 item 的圖標,第二個是 QString 類型,作為這個item 后面的文字說明。當然,我們也可以使用 insertItem()函數(shù)在特定的位置動態(tài)的增加 item,具體使用請查閱 API 文檔。最后,我們將這個 QListWidget 的 currentTextChanged()信號同QLabel 的 setText()連接起來,這樣,在我們點擊 item 的時候,label 上面的文字就可以改變了。
我們還可以設置 viewModel 這個參數(shù),來確定使用不同的視圖進行顯示。比如,我們使用下面的語句:
list->setViewMode(QListView::IconMode);
再來看看程序界面吧!
本文出自 “豆子空間” 博客,請務必保留此出處 http://devbean.blog.51cto.com/448512/193918
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: