QT之QListWidget与QListWidgetItem

第一个要说的是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);
再来看看程序界面吧


QListWidget可以显示一个清单,清单中的每个项目是QListWidgetItem的一个实例,每个项目可以通过QListWidgetItem来操作。可以通过QListWidgetItem来设置每个项目的图像与文字。下面说明3个例子,一个例子只显示文字,一个例子显示文字和图标,最后一个例子增加每个项的选择的信号。


例子1:


  1. #include <QApplication>  
  2. #include <QWidget>  
  3. #include <QVBoxLayout>  
  4. #include <QListWidget>  
  5. #include <QListWidgetItem>  
  6. int main(int argc, char** argv)  
  7. {  
  8.     QApplication app(argc, argv);  
  9.     QWidget* widget = new QWidget;  
  10.     QListWidget* listWidget = new QListWidget;  
  11.     QVBoxLayout* layout = new QVBoxLayout;  
  12.     QListWidgetItem* lst1 = new QListWidgetItem("data", listWidget);  
  13.     QListWidgetItem* lst2 = new QListWidgetItem("decision", listWidget);  
  14.     QListWidgetItem* lst3 = new QListWidgetItem("document", listWidget);  
  15.     QListWidgetItem* lst4 = new QListWidgetItem("process", listWidget);  
  16.     QListWidgetItem* lst5 = new QListWidgetItem("printer", listWidget);  
  17.     listWidget->insertItem(1, lst1);  
  18.     listWidget->insertItem(2, lst2);  
  19.     listWidget->insertItem(3, lst3);  
  20.     listWidget->insertItem(4, lst4);  
  21.     listWidget->insertItem(5, lst5);  
  22.     listWidget->show();  
  23.     layout->addWidget(listWidget);  
  24.     widget->setLayout(layout);  
  25.     widget->show();  
  26.     app.exec();  
  27.       
  28. }  

 

运行如下图:

 

 

 

 

第2个例子:


  1. #include <QApplication>  
  2. #include <QWidget>  
  3. #include <QVBoxLayout>  
  4. #include <QListWidget>  
  5. #include <QListWidgetItem>  
  6. int main(int argc, char** argv)  
  7. {  
  8.     QApplication app(argc, argv);  
  9.     QWidget* widget = new QWidget;  
  10.     QListWidget* listWidget = new QListWidget;  
  11.     QVBoxLayout* layout = new QVBoxLayout;  
  12.     QListWidgetItem* lst1 = new QListWidgetItem(QIcon("images/data.png"), "data", listWidget);  
  13.     QListWidgetItem* lst2 = new QListWidgetItem(QIcon("images/decision.png"), "decision", listWidget);  
  14.     QListWidgetItem* lst3 = new QListWidgetItem(QIcon("images/document.png"), "document", listWidget);  
  15.     QListWidgetItem* lst4 = new QListWidgetItem(QIcon("images/process.png"), "process", listWidget);  
  16.     QListWidgetItem* lst5 = new QListWidgetItem(QIcon("images/printer.png"), "printer", listWidget);  
  17.     listWidget->insertItem(1, lst1);  
  18.     listWidget->insertItem(2, lst2);  
  19.     listWidget->insertItem(3, lst3);  
  20.     listWidget->insertItem(4, lst4);  
  21.     listWidget->insertItem(5, lst5);  
  22.     listWidget->show();  
  23.     layout->addWidget(listWidget);  
  24.     widget->setLayout(layout);  
  25.     widget->show();  
  26.     app.exec();  
  27.       
  28. }  

 

运行如下图:

 

 

 

第3个例子:

 

  1. #include <QApplication>  
  2. #include <QWidget>  
  3. #include <QHBoxLayout>  
  4. #include <QListWidget>  
  5. #include <QListWidgetItem>  
  6. #include <QLabel>  
  7. int main(int argc, char** argv)  
  8. {  
  9.     QApplication app(argc, argv);  
  10.     QWidget* widget = new QWidget;  
  11.     QListWidget* listWidget = new QListWidget;  
  12.     QHBoxLayout* layout = new QHBoxLayout;  
  13.     QLabel* label = new QLabel;  
  14.     label->setFixedWidth(100);  
  15.     QListWidgetItem* lst1 = new QListWidgetItem(QIcon("images/data.png"), "data", listWidget);  
  16.     QListWidgetItem* lst2 = new QListWidgetItem(QIcon("images/decision.png"), "decision", listWidget);  
  17.     QListWidgetItem* lst3 = new QListWidgetItem(QIcon("images/document.png"), "document", listWidget);  
  18.     QListWidgetItem* lst4 = new QListWidgetItem(QIcon("images/process.png"), "process", listWidget);  
  19.     QListWidgetItem* lst5 = new QListWidgetItem(QIcon("images/printer.png"), "printer", listWidget);  
  20.     listWidget->insertItem(1, lst1);  
  21.     listWidget->insertItem(2, lst2);  
  22.     listWidget->insertItem(3, lst3);  
  23.     listWidget->insertItem(4, lst4);  
  24.     listWidget->insertItem(5, lst5);  
  25.     QObject::connect(listWidget, SIGNAL(currentTextChanged(const QString &)), label, SLOT(setText(const QString &)));  
  26.     listWidget->show();  
  27.     layout->addWidget(listWidget);  
  28.     layout->addWidget(label);  
  29.     widget->setLayout(layout);  
  30.     widget->show();  
  31.     app.exec();  
  32.       
  33. }  

 

运行如下图:

 

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值