Qt入门-列表框QListWidget类

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

class Q_GUI_EXPORT QListWidget : public QListView
{
    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

#ifndef __WINDOW_H__
#define __WINDOW_H__

#include <QMainWindow>
#include <QPushButton>
#include <QLineEdit>
#include <QLayout>
#include <QLabel>
#include <QComboBox>
#include <QMessageBox>
#include <QDialog>
#include <QListWidget>


class Window : public QMainWindow
{
	Q_OBJECT

public:
	Window(QWidget *parent = NULL):QMainWindow(parent)
	{
		
		listWidget = new QListWidget(this);
		new QListWidgetItem(tr("Oak"), listWidget);
		new QListWidgetItem(tr("Fir"), listWidget);
		new QListWidgetItem(tr("Pine"), listWidget);

		
		QLabel *lbl = new QLabel(tr("select text:"));
		edt = new QLineEdit;
		
		QVBoxLayout *leftLayout = new QVBoxLayout;
		
		leftLayout->addWidget(listWidget);
		leftLayout->addWidget(lbl);
		leftLayout->addWidget(edt);

		//
		edt_add = new QLineEdit;
		QPushButton *add_btn = new QPushButton(tr("Add"));
		QPushButton *del_btn = new QPushButton(tr("Del"));
		QPushButton *quit_btn = new QPushButton(tr("Quit"));

		QVBoxLayout *rightLayout = new QVBoxLayout;
		rightLayout->addWidget(edt_add);
		rightLayout->addWidget(add_btn);
		rightLayout->addWidget(del_btn);
		rightLayout->addStretch();
		rightLayout->addWidget(quit_btn);

		QHBoxLayout *mainLayout = new QHBoxLayout;
		mainLayout->addLayout(leftLayout);
		mainLayout->addLayout(rightLayout);

		QWidget *mainWidget = new QWidget;
		mainWidget->setLayout(mainLayout);

		setCentralWidget(mainWidget);

		connect(listWidget, SIGNAL(itemSelectionChanged()), this, SLOT(itemSelectionChanged ()));
		connect(add_btn, SIGNAL(clicked()), this, SLOT(on_add()));
		connect(del_btn, SIGNAL(clicked()), this, SLOT(on_del()));
		connect(quit_btn, SIGNAL(clicked()), this, SLOT(close()));
	}

private:
	QListWidget *listWidget;
	QLineEdit *edt, *edt_add;

private slots:
	void itemSelectionChanged()
	{
		edt->setText(listWidget->currentItem()->text());
	}

	void on_add()
	{
		listWidget->insertItem(listWidget->currentRow() + 1, edt_add->text());
	}

	void on_del()
	{
		listWidget->takeItem(listWidget->currentRow());
	}


};


#endif


main.cpp

#include <QApplication>
#include <QDialog>
#include "Window.h"



int main(int argc, char *argv[])
{
	QApplication a(argc, argv);
	Window *mainWindow = new Window;



	mainWindow->resize(300, 300);
	mainWindow->setWindowTitle(QWidget::tr("Qt Test"));
	mainWindow->show();

	return a.exec();
}


编译运行,界面如下:

 

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

    QListWidgetItem *configButton = new QListWidgetItem(contentsWidget);
    configButton->setIcon(QIcon(":/images/config.png"));
    configButton->setText(tr("Configuration"));
    configButton->setTextAlignment(Qt::AlignHCenter);
    configButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);

    QListWidgetItem *updateButton = new QListWidgetItem(contentsWidget);
    updateButton->setIcon(QIcon(":/images/update.png"));
    updateButton->setText(tr("Update"));
    updateButton->setTextAlignment(Qt::AlignHCenter);
    updateButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);

    QListWidgetItem *queryButton = new QListWidgetItem(contentsWidget);
    queryButton->setIcon(QIcon(":/images/query.png"));
    queryButton->setText(tr("Query"));
    queryButton->setTextAlignment(Qt::AlignHCenter);
    queryButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);

如图:



  • 3
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值