Qt入门-列表框QListWidget类

原文地址::http://blog.csdn.net/xgbing/article/details/7768226

相关文章

1、Qt学习: QListWidget程序示例----http://blog.51cto.com/13119855/1970275

2、Qt学习——QListWidget控件的使用----http://blog.csdn.net/gdutlyp/article/details/50370536


    QListWidget类也是GUI中常用的类,它从QListView下派生:

[cpp] view plain copy
  1. class Q_GUI_EXPORT QListWidget : public QListView  
  2. {  
  3.     Q_OBJECT  


常用方法和属性:

(1)addItem

void addItem ( const QString & label )
void addItem ( QListWidgetItem * item )
void addItems ( const QStringList & labels )

添加一项或多项。

(2)

int count () const

包含隐藏的列表项在内的列表项总数。

(3)currentItem

QListWidgetItem * currentItem () const

返回当前选择的项。

(4)currentRow

int currentRow () const

返回当前选择的项的序号。

(5)insertItem

void insertItem ( int row, QListWidgetItem * item )
void insertItem ( int row, const QString & label )
void insertItems ( int row, const QStringList & labels )

插入新项到列表框。

(6)

QListWidgetItem * item ( int row ) const

返回序号为row处的列表项。

(7)removeItemWidget

void removeItemWidget ( QListWidgetItem * item )

删除指定项item。

(8)selectedItems

QList<QListWidgetItem *> selectedItems () const

返回当前选择的项。

(9)

void setCurrentItem ( QListWidgetItem * item )

设置当前选择的项为item。

(10)

void setCurrentRow ( int row )

设置当前选择项。

(11)

void setSortingEnabled ( bool enable )

设置排序功能是否启用。

(12)

void sortItems ( Qt::SortOrder order = Qt::AscendingOrder )

排序列表框,参数的值可以是:

Qt::AscendingOrder          0                  The items are sorted ascending e.g. starts with 'AAA' ends with 'ZZZ' in Latin-1 locales
Qt::DescendingOrder       1                  The items are sorted descending e.g. starts with 'ZZZ' ends with 'AAA' in Latin-1 locales
(13)

QListWidgetItem * QListWidget::takeItem ( int row )

删除一项。

 

示例:

Window.h

[cpp] view plain copy
  1. #ifndef __WINDOW_H__  
  2. #define __WINDOW_H__  
  3.   
  4. #include <QMainWindow>  
  5. #include <QPushButton>  
  6. #include <QLineEdit>  
  7. #include <QLayout>  
  8. #include <QLabel>  
  9. #include <QComboBox>  
  10. #include <QMessageBox>  
  11. #include <QDialog>  
  12. #include <QListWidget>  
  13.   
  14.   
  15. class Window : public QMainWindow  
  16. {  
  17.     Q_OBJECT  
  18.   
  19. public:  
  20.     Window(QWidget *parent = NULL):QMainWindow(parent)  
  21.     {  
  22.           
  23.         listWidget = new QListWidget(this);  
  24.         new QListWidgetItem(tr("Oak"), listWidget);  
  25.         new QListWidgetItem(tr("Fir"), listWidget);  
  26.         new QListWidgetItem(tr("Pine"), listWidget);  
  27.   
  28.           
  29.         QLabel *lbl = new QLabel(tr("select text:"));  
  30.         edt = new QLineEdit;  
  31.           
  32.         QVBoxLayout *leftLayout = new QVBoxLayout;  
  33.           
  34.         leftLayout->addWidget(listWidget);  
  35.         leftLayout->addWidget(lbl);  
  36.         leftLayout->addWidget(edt);  
  37.   
  38.         //  
  39.         edt_add = new QLineEdit;  
  40.         QPushButton *add_btn = new QPushButton(tr("Add"));  
  41.         QPushButton *del_btn = new QPushButton(tr("Del"));  
  42.         QPushButton *quit_btn = new QPushButton(tr("Quit"));  
  43.   
  44.         QVBoxLayout *rightLayout = new QVBoxLayout;  
  45.         rightLayout->addWidget(edt_add);  
  46.         rightLayout->addWidget(add_btn);  
  47.         rightLayout->addWidget(del_btn);  
  48.         rightLayout->addStretch();  
  49.         rightLayout->addWidget(quit_btn);  
  50.   
  51.         QHBoxLayout *mainLayout = new QHBoxLayout;  
  52.         mainLayout->addLayout(leftLayout);  
  53.         mainLayout->addLayout(rightLayout);  
  54.   
  55.         QWidget *mainWidget = new QWidget;  
  56.         mainWidget->setLayout(mainLayout);  
  57.   
  58.         setCentralWidget(mainWidget);  
  59.   
  60.         connect(listWidget, SIGNAL(itemSelectionChanged()), this, SLOT(itemSelectionChanged ()));  
  61.         connect(add_btn, SIGNAL(clicked()), this, SLOT(on_add()));  
  62.         connect(del_btn, SIGNAL(clicked()), this, SLOT(on_del()));  
  63.         connect(quit_btn, SIGNAL(clicked()), this, SLOT(close()));  
  64.     }  
  65.   
  66. private:  
  67.     QListWidget *listWidget;  
  68.     QLineEdit *edt, *edt_add;  
  69.   
  70. private slots:  
  71.     void itemSelectionChanged()  
  72.     {  
  73.         edt->setText(listWidget->currentItem()->text());  
  74.     }  
  75.   
  76.     void on_add()  
  77.     {  
  78.         listWidget->insertItem(listWidget->currentRow() + 1, edt_add->text());  
  79.     }  
  80.   
  81.     void on_del()  
  82.     {  
  83.         listWidget->takeItem(listWidget->currentRow());  
  84.     }  
  85.   
  86.   
  87. };  
  88.   
  89.   
  90. #endif  


main.cpp

[cpp] view plain copy
  1. #include <QApplication>  
  2. #include <QDialog>  
  3. #include "Window.h"  
  4.   
  5.   
  6.   
  7. int main(int argc, char *argv[])  
  8. {  
  9.     QApplication a(argc, argv);  
  10.     Window *mainWindow = new Window;  
  11.   
  12.   
  13.   
  14.     mainWindow->resize(300, 300);  
  15.     mainWindow->setWindowTitle(QWidget::tr("Qt Test"));  
  16.     mainWindow->show();  
  17.   
  18.     return a.exec();  
  19. }  


编译运行,界面如下:

Qt入门-列表框QListWidget类

 

QListWidget的项可以是带图片的显示,示例:

[cpp] view plain copy
  1. QListWidgetItem *configButton = new QListWidgetItem(contentsWidget);  
  2. configButton->setIcon(QIcon(":/images/config.png"));  
  3. configButton->setText(tr("Configuration"));  
  4. configButton->setTextAlignment(Qt::AlignHCenter);  
  5. configButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);  
  6.   
  7. QListWidgetItem *updateButton = new QListWidgetItem(contentsWidget);  
  8. updateButton->setIcon(QIcon(":/images/update.png"));  
  9. updateButton->setText(tr("Update"));  
  10. updateButton->setTextAlignment(Qt::AlignHCenter);  
  11. updateButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);  
  12.   
  13. QListWidgetItem *queryButton = new QListWidgetItem(contentsWidget);  
  14. queryButton->setIcon(QIcon(":/images/query.png"));  
  15. queryButton->setText(tr("Query"));  
  16. queryButton->setTextAlignment(Qt::AlignHCenter);  
  17. queryButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);  

如图:

Qt入门-列表框QListWidget类