QT开发(九)——QT单元组件

    QT有三种单元组件,分别为列表单元组件QListWidget、树形单元组件QTreeWidget、表格单元组件QTableWidget

一、QListWidget列表单元

1QListWidget组件简介

    QListWidget列表单元组件继承自QListView,是基于单元的列表组件。QListWidget可以显示一个清单,清单中的每个项目是QListWidgetItem的一个实例,每个项目可以通过QListWidgetItem来操作。可以通过QListWidgetItem来设置每个项目的图像与文字

2QListWidget组件属性

    QListWidget列表单元组件属性设置选项:

    A、name:组件对应源代码内的名称

    B、font:设置表格内部的字体

    C、count:保持项目的数目

    D、currentRow:保持当前项目的行

    E、sortingEnabled:是否对item排序

3QListWidget组件常用成员函数

QListWidget::QListWidgetQWidget *parent = 0

构造父对象为parent的ListWidget

void QListWidget::addItemQListWidgetItem *item

添加项目item

void QListWidget::addItemconst QString &label

添加一个新的项目,在新添加的项目中添加label标签

void QListWidget::addItemsconst QStringList &labels

添加一列项目

void QListWidget::clear()[slot]

清除该ListWidget中的所有项目

QListWidgetItem *QListWidget::currentItem()const

返回当前活动的项目

void QListWidget::editItemQListWidgetItem *item

如果项目item是可编辑的,开始编辑项目item

QListQListWidget::findItemsconst QString &textQt::MatchFlags flagsconst

查找匹配字符串text的项目,并返回查找结果

void QListWidget::insertItemint rowQListWidgetItem * item

在行row处插入项目item

void QListWidget::insertItemint rowconst QString &label

这是一个重载函数,功能同(9),在行row处插入标签为label的新项目

void QListWidget::insertItemint rowconst QStringList &labels

在行row处插入一列项目

QListWidgetItem *QListWidget::itemint rowconst

返回行row处的项目,如果行row处没有项目则返回0

QListWidgetItem *QListWidget::itemAtconst QPoint &pconst

返回点p处的项目

QListWidgetItem *QListWidget::itemAtint rowint yconst

返回坐标(x,y)处的项目

QWidget *QListWidget::itemWidgetQListWidgetItem *itemconst

返回项目item处显示的控件

QListWidgetItem *QListWidget::takeItemint row

移除行row处的项目,并返回项目控件

void QListWidget::removeItemWidgetQListWidgetItem *item

移除项目item处的控件

int QListWidget::rowconst QListWidgetItem *itemcosnt

返回项目item所在的行

QList QListWidget::selectedItems()const

返回所有被选中的项目的控件

void QListWidget::setcurrentItemQListWidgetItem *item

设置项目item为当前项目

void QListWidget::setItemWidgetQListWidgetItem *itemQWidget *widget

设置控件widget为项目item的显示控件

void QListWidget::setItemWidgetQListWidgetItem *itemQWidget *widget

void QListWidget::sortItemsQt::SortOrder order = Qt::AscendingOrder

把项目按照order进行排序

4、QListWidget实例

#include 
#include 
#include 
#include 
#include 
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QWidget* widget = new QWidget;
    QListWidget* listWidget = new QListWidget(widget);
    QVBoxLayout* layout = new QVBoxLayout;
    QListWidgetItem* lst1 = new QListWidgetItem("data", listWidget);
    QListWidgetItem* lst2 = new QListWidgetItem("decision", listWidget);
    QListWidgetItem* lst3 = new QListWidgetItem("document", listWidget);
    QListWidgetItem* lst4 = new QListWidgetItem("process", listWidget);
    QListWidgetItem* lst5 = new QListWidgetItem("printer", listWidget);
    listWidget->insertItem(1, lst1);
    listWidget->insertItem(2, lst2);
    listWidget->insertItem(3, lst3);
    listWidget->insertItem(4, lst4);
    listWidget->insertItem(5, lst5);
    listWidget->show();
    layout->addWidget(listWidget);
    widget->setLayout(layout);
    widget->show();
    
    return a.exec();
}

二、QTreeWidget树形单元

1QTreeWidget组件简介

    QTreeWidget树形单元组件继承自QTreeView类,是树形视图使用预定义的模型,也是基于模型/视图结构的组件,为方便开发人员使用树形视图,可以用来来创建简单地树形结构列表。通过QTreeWidget类和QTreeWidgetItem类实现树形结构,QTreeWidgetItem类实现结点的添加

2QTreeWidget组件属性

    QTreeWidget组件属性设置选项:

    A、name:组件对应源代码内的名称

 B、font:设置表格内部的字体

    C、columnCount:保存TreeWidget的列数

3QTreeWidget组件常用成员函数

QTreeWidget::QTreeWidgetQWidget *parent = 0

构造一个父对象为parent的TreeWidget

void QTreeWidget::addTopLevelItemQTreeWidgetItem * item

QTreeWidget组件中追加item为顶级项目

void QTreeWidget::addTopLevelItemsconst QList &items

items中的项目作为顶级项目追加到该TreeWidget中

void QTreeWidget::clear()[slot]

清除TreeWidget中的所有项目

void QTreeWidget::collapseItemconst QTreeWidgetItem *item[slot]

折叠项目item

int QTreeWidget::currentColumn()const

返回当前活动列

QTreeWidgetItem *QTreeWidget::currentItem()const

返回当前活动项目

void QTreeWidget::editItemQTreeWidgetItem *itemint column = 0

如果列column的item是可编辑的,开始编辑

void QTreeWidget::expandItemconst QTreeWidgetItem *item[slot]

展开项目

QList QTreeWidget::findItemsconst QString &textQt::MatchFlags flagsint column = 0const

查找匹配字符串的text的项目,并返回查找结果

QTreeWidgetItem *QTreeWidget::headerItem()const

返回头项目

QModelIndex QTreeWidget::indexFromItemQTreeWidgetItem *itemint column = 0const [protected]

返回列column的项目item模型索引

int QTreeWidget::indexOfTopLevelItemQTreeWidgetItem *itemconst

返回顶级项目item的模型索引,如果item不存在返回-1

int QTreeWidget::sortColumn()const
返回排序的列

void QTreeWidget::sortItemsint columnQt::SortOrder order

对列column的项目按照order进行排序

QTreeWidgetItem *QTreeWidget::itemAboveconst QTreeWidgetItem *itemconst

返回item的上一个项目

QTreeWidgetItem *QTreeWidget::itemAtconst QPoint &pconst

返回点p处的项目

QTreeWidgetItem *QTreeWidget::itemAtint xint yconst

返回坐标(x,y)处的项目

void QTreeWidget::setItemWidgetQTreeWidgetItem *itemint columnQWidget *widget

设置控件widget为项目item的显示控件,项目item在列column中

QTreeWidgetItem *QTreeWidget::itemBelowconst QTreeWidgetItem *itemconst

返回item的下一个项目

QWidget *QTreeWidget::itemWidgetQTreeWidgetItem *itemint columnconst

返回列column中的项目item显示控件

void QTreeWidget::removeItemWidgetQTreeWidgetItem *itemint column

移除列column中的项目item的显示控件

QList QTreeWidget::selectItems()const

返回所有选中状态的项目

void QTreeWidget::setCurrentItemQTreeWidgetItem *item

设置item为当前项目

void QTreeWidget::setCurrentItemQTreeWidgetItem *itemint column

设置列column的项目item为当前项目

void QTreeWidget;:setHeaderItemQTreeWidgetItem *item

设置item为该TreeWidget的头项目

void QTreeWidget::setHeaderLabelconst QString &label

设置label为头标题

QTreeWidgetItem *QTreeWidget::topLevelItemint indexcosnt

返回所有index的顶级项目

4、QTreeWidget实例

#include 
#include 
#include 
#include 
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QWidget *widget = new QWidget;
    QTreeWidget *tree = new QTreeWidget(widget);
    tree->setColumnCount(1); //设置列数
    tree->setHeaderLabel(QString::fromLocal8Bit("图像选择")); //设置头的标题
    QTreeWidgetItem *Item1 = new QTreeWidgetItem(tree,QStringList(QString::fromLocal8Bit("图像1")));
    QTreeWidgetItem *Item11 = new QTreeWidgetItem(Item1,QStringList(QString::fromLocal8Bit("Band1"))); //子节点1
    Item1->addChild(Item11); //添加子节点
    QTreeWidgetItem *Item2 = new QTreeWidgetItem(tree,QStringList(QString::fromLocal8Bit("图像2")));
    QTreeWidgetItem *Item21 = new QTreeWidgetItem(Item2,QStringList(QString::fromLocal8Bit("Band1"))); //子节点1
    QTreeWidgetItem *Item22 = new QTreeWidgetItem(Item2,QStringList(QString::fromLocal8Bit("Band2"))); //子节点2
    Item2->addChild(Item21);  //添加子节点
    Item2->addChild(Item22);
    tree->expandAll(); //结点全部展开
    widget->show();
    return a.exec();
}

三、QTableWidget表格单元

1QTableWidget组件简介

    QTableWidget表格单元组件继承自QTableView,QTableView可以使用自定义的数据模型来显示内容,而QTableWidget则只能使用标准的数据模型,并且其单元格数据是QTableWidgetItem的对象来实现的QTableWidgetItem用来表示表格中的一个单元格,整个表格都需要用逐个单元格构建起来。

2QTableWidget组件属性

    QTableWidget组件属性设置选项:

    A、name:组件对应源代码内的名称

    B、font:设置表格对应的字体

    C、columnCount:保存列的数目

    D、rowCount:保存行的数目

3QTableWidget组件常用成员函数

QTableWidget::QTableWidgetQWidget * parent = 0

构造一个父对象为parent的TableWidget

QTableWidget::QTableWidgetint rowsint columnsQWidget *parent = 0

构造一个rows行,columns列,父对象为parent的TableWidget控件

QWidget *QTableWidget::cellWidgetint rowint columnconst

返回行row,列column的单元格处的控件

void QTableWidget::clear()[slot]

删除该TreeWidget中的所有项目

 void QTableWidget::clearContents()[slot]

删除该TreeWidget中除了header外的所有项目

 int QTableWidget::columnconst QTableWidgetItem *itemconst

返回项目item所在的列

int QTableWidget::currentColumn()const

返回当前活动的列

QTableWidgetItem *QTableWidget::currentItem()const

返回当前活动的项目

int QTableWidget::currentRow()const

返回当前活动的行

void QTableWidget::editItemQTableWidgetItem *item

如果item是可编辑的,开始编辑item

QList QTableWidget::findItemsconst QString &textQt::MatchFlags flagsconst

查找匹配字符串text的项目,并返回查找结果

void QTableWidget::insertColumnint column[slot]

在列column处插入新列

void QTableWidget::insertRowint row[slot]

在行row处插入新行

QTableWidgetItem *QTableWidget::itemint rowint columnconst

返回行row、列column处的项目

QTableWidgetItem *QTableWidget::itemAtconst QPoint &pointconst

返回点point处的项目

QTableWidgetItem *QTableWidget::itemAtint axint ayconst

返回坐标(ax,ay)处的项目

void QTableWidget::removeCellWidgetint rowint column

移除行row、列column单元格处的显示控件

void QTableWidget::removeColumnint column[slot]

移除列column

void QTableWidget::removerRowint row[slot]

移除行row

int QTableWidget::rowconst QTableWidgetItem *itemcosnt

返回item的行

QList QTableWidget::selectedItems()

返回所有选中状态的项目

void QTableWidget::setCellWidgetint rowint columnQWidget *widget

设置行row、列column处的显示控件为widget。

void QTableWidget::setCurrentCellint rowint column

设置行row,列column处的单元格为当前活动单元格

void QTableWidget::setCurrentItemQTableWidgetItem *item

设置项目item为当前活动项目

void QTableWidget::setHorizontalHeaderItemint columnQTableWidgetItem *item

设置项目item为列column的水平头项目,功能同setVerticalHeaderItem()

void QTableWidget::setHorizontalHeaderLabelsconst QStringList *labels

设置水平标题为labels,功能同setVerticalHeaderLabels()

void QTableWidget::setItemint rowint columnQTableWidgetItem *item

设置行row、列column的单元格的项目为item

void QTableWidget::sortItemsint columnQt::SortOrder order = Qt::AscendingOrder

对列column按照order进行排序

QTableWidgetItem *QTableWidget::takeHorizonalHeaderItemint column

移除列column的水平头项目,功能同takeVerticalHeaderItem()

QTableWidgetItem *QTableWidget::takeItemint rowint column

移除行row、列column单元格处的项目

QTableWidgetItem *QTableWidget::verticalHeaderItemint rowconst

返回行row的垂直头项目

4、QTableWidget实例

#include 
#include 
#include 
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QTableWidget *tablewidget = new QTableWidget(10,5);
    tablewidget->resize(350, 200);  //设置表格
    QStringList header;
    header<<"Month"<<"Description";
    tablewidget->setHorizontalHeaderLabels(header);
    tablewidget->setItem(0,0,new QTableWidgetItem("Jan"));
    tablewidget->setItem(1,0,new QTableWidgetItem("Feb"));
    tablewidget->setItem(2,0,new QTableWidgetItem("Mar"));
    tablewidget->setItem(0,1,new QTableWidgetItem("Jan's month"));
    tablewidget->setItem(1,1,new QTableWidgetItem("Feb's month"));
    tablewidget->setItem(2,1,new QTableWidgetItem("Mar's month"));
    tablewidget->show();
    return a.exec();
}