视图模型
QFileSystemModel
属性字段:
enum Roles { FileIconRole, FilePathRole, FileNameRole, FilePermissions }
nameFilterDisables : bool
readOnly : bool
resolveSymlinks : bool
函数 | 作用 |
---|---|
QIcon fileIcon(const QModelIndex &index) const | 文件图标 |
QFileInfo fileInfo(const QModelIndex &index) const | 文件信息 |
QString fileName(const QModelIndex &index) const | 文件名 |
QString filePath(const QModelIndex &index) const | 文件路经 |
QDir::Filters filter() const | 筛选 |
QFileIconProvider * iconProvider() const | |
QModelIndex index(const QString &path, int column = 0) const | 这个可以找到QModelindex |
bool isDir(const QModelIndex &index) const | 判断是不是目录 |
bool isReadOnly() const | 是否只读 |
QDateTime lastModified(const QModelIndex &index) const | 修改时间 |
QModelIndex mkdir(const QModelIndex &parent, const QString &name) | 新建文件夹 |
QVariant myComputer(int role = Qt::DisplayRole) const | |
bool nameFilterDisables() const | |
QStringList nameFilters() const | |
QFile::Permissions permissions(const QModelIndex &index) const | 权限 |
bool remove(const QModelIndex &index) | 移除 |
bool resolveSymlinks() const | |
bool rmdir(const QModelIndex &index) | 删除目录 |
QDir rootDirectory() const | 返回根目录 |
QString rootPath() const | 根路径 |
void setFilter(QDir::Filters filters) | 过滤器 |
void setIconProvider(QFileIconProvider *provider) | |
void setNameFilterDisables(bool enable) | |
void setNameFilters(const QStringList &filters) | |
void setReadOnly(bool enable) | 设置为只读 |
void setResolveSymlinks(bool enable) | |
QModelIndex setRootPath(const QString &newPath) | 设置根路径 |
qint64 size(const QModelIndex &index) const | 大小 |
QString type(const QModelIndex &index) const | 类型 |
signals:
void directoryLoaded(const QString &path)
void fileRenamed(const QString &path, const QString &oldName, const QString &newName)
void rootPathChanged(const QString &newPath)
例子:
#ifndef MyFileSystem_H
#define MyFileSystem_H
#include<QWidget>
#include<QLabel>
#include<QLineEdit>
#include<QPushButton>
#include<QTreeView>
#include<QFileSystemModel>
class MyFileSystem :public QWidget
{
Q_OBJECT
public:
MyFileSystem(QWidget *parent = 0);
private:
QLabel *label;
QPushButton *forward_bt,*back_bt,*sure_bt;
QLineEdit *location;
QFileSystemModel *file_model;
QTreeView *file_view;
int now_index=0;
QList<QString> dir_list;
};
#endif // MyFileSystem_H
#include "myfilesystem.h"
#include<QDir>
#include<QList>
#include<QString>
#include<QDebug>
#include<QHBoxLayout>
#include<QVBoxLayout>
MyFileSystem::MyFileSystem(QWidget *parent)
:QWidget(parent)
{
QVBoxLayout *main_desktop=new QVBoxLayout(this);
QHBoxLayout *top_title=new QHBoxLayout;
forward_bt=new QPushButton("前进");
back_bt=new QPushButton("后退");
sure_bt=new QPushButton("确定");
location=new QLineEdit;
location->setPlaceholderText("输入你想去的地址");
file_model=new QFileSystemModel;
file_model->setRootPath(QDir::currentPath());
qDebug()<<file_model->rootPath();
file_view=new QTreeView(this);
file_view->setModel(file_model);
file_view->setRootIndex(file_model->index("/home/zz"));//显示指定的目录
top_title->addWidget(forward_bt);
top_title->addWidget(back_bt);
top_title->addWidget(location);
top_title->addWidget(sure_bt);
main_desktop->addLayout(top_title);
main_desktop->addWidget(file_view);
this->resize(500,500);
this->show();
//实现前进,后退,确定的功能
dir_list.append("/home/zz");
location->setText(dir_list.at(now_index));
connect(back_bt,QOverload<bool>::of(&QPushButton::clicked),[this]()mutable{
if(this->now_index>0)--this->now_index;
this->file_view->setRootIndex(this->file_model->index(this->dir_list.at(this->now_index)));
this->location->setText(this->dir_list.at(this->now_index));
qDebug()<<this->dir_list.length()<<this->now_index<<this->dir_list.at(this->now_index);
});
connect(forward_bt,QOverload<bool>::of(&QPushButton::clicked),[this]()mutable{
if(this->now_index<this->dir_list.length()-1)++this->now_index;
this->file_view->setRootIndex(this->file_model->index(this->dir_list.at(this->now_index)));
this->location->setText(this->dir_list.at(this->now_index));
qDebug()<<this->dir_list.length()<<this->now_index<<this->dir_list.at(this->now_index);
});
connect(sure_bt,QOverload<bool>::of(&QPushButton::clicked),[this]()mutable{
QString position=this->location->text();
this->file_view->setRootIndex(this->file_model->index(position));
++this->now_index;
this->dir_list.insert(this->now_index,position);
qDebug()<<this->dir_list.length()<<this->now_index<<this->dir_list.at(this->now_index);
});
}
QFileDialog
提供了一个窗口,可以选择文件或者目录
Public Types:
enum AcceptMode { AcceptOpen, AcceptSave }
enum DialogLabel { LookIn, FileName, FileType, Accept, Reject }
enum FileMode { AnyFile, ExistingFile, Directory, ExistingFiles, DirectoryOnly }
enum Option { ShowDirsOnly, DontResolveSymlinks, DontConfirmOverwrite, DontUseNativeDialog, ..., DontUseCustomDirectoryIcons }
flags Options
enum ViewMode { Detail, List }
函数 | 作用 |
---|---|
AcceptMode acceptMode() const | 接受的方式,打开或者保存 |
QString defaultSuffix() const | 默认的后缀 |
QDir directory() const | 目录 |
QUrl directoryUrl() const | 目录的url |
FileMode fileMode() const | 文件的可接受方式 |
QDir::Filters filter() const | 过滤器 |
QStringList history() const | 历史 |
QFileIconProvider * iconProvider() const | |
QString labelText(DialogLabel label) const | |
QStringList mimeTypeFilters() const | |
QStringList nameFilters() const | 过滤器 |
void open(QObject *receiver, const char *member) | |
Options options() const | |
QAbstractProxyModel * proxyModel() const | |
bool restoreState(const QByteArray &state) | |
QByteArray saveState() const | 保存状态 |
void selectFile(const QString &filename) | 选择文件 |
void selectMimeTypeFilter(const QString &filter) | |
void selectNameFilter(const QString &filter) | 名字过滤 |
void selectUrl(const QUrl &url) | 经过url进行选择 |
QStringList selectedFiles() const | 选择的文件名称 |
QString selectedMimeTypeFilter() const | 选择的文件类型 |
QList selectedUrls() const | |
void setAcceptMode(AcceptMode mode) | 设置dialog的打开作用 |
void setDefaultSuffix(const QString &suffix) | 设置默认的后缀 |
void setDirectory(const QString &directory) | 设置打开的目录 |
void setDirectory(const QDir &directory) | 设置打开的目录 |
void setDirectoryUrl(const QUrl &directory) | 设置打开的目录 |
void setFileMode(FileMode mode) | 文件的mode |
void setFilter(QDir::Filters filters) | 过滤器 |
void setHistory(const QStringList &paths) | 历史 |
void setIconProvider(QFileIconProvider *provider) | |
void setItemDelegate(QAbstractItemDelegate *delegate) | |
void setLabelText(DialogLabel label, const QString &text) | 设置label的text |
void setMimeTypeFilters(const QStringList &filters) | 过滤器 |
void setNameFilter(const QString &filter) | 过滤器 |
void setNameFilters(const QStringList &filters) | 过滤器 |
void setOption(Option option, bool on = true) | |
void setOptions(Options options) | |
void setProxyModel(QAbstractProxyModel *proxyModel) | |
void setSidebarUrls(const QList &urls) | |
void setSupportedSchemes(const QStringList &schemes) | |
void setViewMode(ViewMode mode) | |
QList sidebarUrls() const | |
QStringList supportedSchemes() const | |
bool testOption(Option option) const | |
ViewMode viewMode() const | |
QString getExistingDirectory(QWidget *parent = Q_NULLPTR, const QString &caption = QString(), const QString &dir = QString(), Options options = ShowDirsOnly) | |
QUrl getExistingDirectoryUrl(QWidget *parent = Q_NULLPTR, const QString &caption = QString(), const QUrl &dir = QUrl(), Options options = ShowDirsOnly, const QStringList &supportedSchemes = QStringList()) | |
QString getOpenFileName(QWidget *parent = Q_NULLPTR, const QString &caption = QString(), const QString &dir = QString(), const QString &filter = QString(), QString *selectedFilter = Q_NULLPTR, Options options = Options()) | 得到文件名字 |
QStringList getOpenFileNames(QWidget *parent = Q_NULLPTR, const QString &caption = QString(), const QString &dir = QString(), const QString &filter = QString(), QString *selectedFilter = Q_NULLPTR, Options options = Options()) | 得到文件名字 |
QUrl getOpenFileUrl(QWidget *parent = Q_NULLPTR, const QString &caption = QString(), const QUrl &dir = QUrl(), const QString &filter = QString(), QString *selectedFilter = Q_NULLPTR, Options options = Options(), const QStringList &supportedSchemes = QStringList()) | 得到文件的url |
QList getOpenFileUrls(QWidget *parent = Q_NULLPTR, const QString &caption = QString(), const QUrl &dir = QUrl(), const QString &filter = QString(), QString *selectedFilter = Q_NULLPTR, Options options = Options(), const QStringList &supportedSchemes = QStringList()) | 得到文件的url |
QString getSaveFileName(QWidget *parent = Q_NULLPTR, const QString &caption = QString(), const QString &dir = QString(), const QString &filter = QString(), QString *selectedFilter = Q_NULLPTR, Options options = Options()) | 保存文件的名字 |
QUrl getSaveFileUrl(QWidget *parent = Q_NULLPTR, const QString &caption = QString(), const QUrl &dir = QUrl(), const QString &filter = QString(), QString *selectedFilter = Q_NULLPTR, Options options = Options(), const QStringList &supportedSchemes = QStringList()) | 保存文件的url |
QString filename=QFileDialog::
getOpenFileName(this,"dialog的标题", "/home/zz",
"Images (*.png *.xpm *.jpg);;Text files (*.txt);;XML files (*.xml)");
QFileDialog dialog(this);
dialog.setFileMode(QFileDialog::AnyFile);//可以选择任何文件
dialog.setNameFilter("Images (*.png *.xpm *.jpg)");//图片文件
dialog.setViewMode(QFileDialog::Detail);
if(dialog.exec())qDebug()<<dialog.selectedFiles();
QStringListModel
例子:
QStringListModel *model=new QStringListModel;
QStringList list;
list<<"A"<<"B"<<"C";
model->setStringList(list);
QListView *listview=new QListView;
listview->setModel(model);
listview->resize(500,500);
listview->show();
QSqlTableModel
其实这东西很少用,直接操作数据库就好,想显示的再去有tableview显示
属性字段:
函数 | 作用 |
---|---|
QSqlIndex primaryKey() const | 主键 |
QSqlRecord record() const | 记录集 |
QSqlRecord record(int row) const | 第几行的记录集 |
virtual void revertRow(int row) | |
virtual void setEditStrategy(EditStrategy strategy) | |
virtual void setFilter(const QString &filter) | |
bool setRecord(int row, const QSqlRecord &values) | |
virtual void setSort(int column, Qt::SortOrder order) | |
virtual void setTable(const QString &tableName) |
例子:
/*
* model->revertAll();//如果不删除,则撤销
* model.submitAll();
* model->removeRow(curRow);
* QSqlRecord record = tablemodel.record(num);
* record.setValue("name",record.value("name").toString()+"2");
* model.insertRecord(1,record);
*/
MyFileSystem::MyFileSystem(QWidget *parent)
:QWidget(parent)
{
QSqlDatabase db;
db = QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("192.168.88.131");
db.setDatabaseName("mydata");
db.setUserName("zz");
db.setPassword("123");
//2.打开数据库
if(db.open())
{
qDebug()<<"DataBase opened!";
}
else
{
qDebug()<< "Error: Failed to connect database." << db.lastError();
}
QSqlTableModel *model=new QSqlTableModel(nullptr,db);
model->setTable("students");
model->select();
QTableView *view=new QTableView;
view->resize(500,500);
view->setModel(model);
view->hideColumn(0);
view->setColumnWidth(1,200);
view->verticalHeader()->setVisible(false);
view->show();
}
QSqlQueryModel
属性字段:
函数 | 作用 |
---|
例子:
QSqlQueryModel *model=new QSqlQueryModel();
model->setQuery("select * from students");
QTableView *view=new QTableView;
view->resize(500,500);
view->setModel(model);
view->hideColumn(0);
view->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
view->setColumnWidth(1,200);
view->verticalHeader()->setVisible(false);
view->show();
QStandardItemModel
属性字段:
函数 | 作用 |
---|---|
void appendRow(QStandardItem *item) | 增加行 |
void clear() | 清除 |
QStandardItem * horizontalHeaderItem(int column) const | 找到标题 |
QList<QStandardItem *> findItems(const QString &text, Qt::MatchFlags flags = Qt::MatchExactly, int column = 0) const | 找相关字段 |
void insertColumn(int column, const QList<QStandardItem *> &items) | 插入列 |
void insertRow(int row, const QList<QStandardItem *> &items) | 插入行 |
void setHorizontalHeaderItem(int column, QStandardItem *item) | 设置标题 |
void setHorizontalHeaderLabels(const QStringList &labels) | |
void setItem(int row, int column, QStandardItem *item) | 设置某一个内容 |
void setVerticalHeaderItem(int row, QStandardItem *item) | 垂直的标题 |
void setVerticalHeaderLabels(const QStringList &labels) | |
QList<QStandardItem *> takeColumn(int column) | 得到列 |
QList<QStandardItem *> takeRow(int row) | 得到行 |
QStandardItem * takeItem(int row, int column = 0) | 得到具体的内容 |
signals:
void itemChanged(QStandardItem *item)
例子:
QStandardItemModel *model=new QStandardItemModel(9,9);
for(int i=1;i<10;i++)
for(int j=1;j<=i;j++)
{
QStandardItem *item=new QStandardItem(QString("%0 x %1 =%2").arg(j).arg(i).arg(i*j));
model->setItem(i-1,j-1,item);
}
QTableView *view=new QTableView;
view->setWindowTitle("专用乘法口诀表");
view->resize(600,500);
view->setModel(model);
view->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
view->setColumnWidth(1,200);
view->setEditTriggers(QAbstractItemView::NoEditTriggers);//不允许编辑
view->horizontalHeader()->setVisible(false);
view->verticalHeader()->setVisible(false);
view->setShowGrid(false);
view->show();
QTableView
属性字段:
函数 | 作用 |
---|---|
int columnWidth(int column) const | 返回宽度 |
int rowHeight(int row) const | 返回高度 |
QHeaderView * horizontalHeader() const | |
bool isColumnHidden(int column) const | 隐藏 |
bool isRowHidden(int row) const | |
int rowAt(int y) const | 返回行 |
void setColumnHidden(int column, bool hide) | 隐藏 |
void setRowHidden(int row, bool hide) | |
void setRowHeight(int row, int height) | 设置高度 |
void setColumnWidth(int column, int width) | 设置宽度 |
void setVerticalHeader(QHeaderView *header) | 标题 |
void setHorizontalHeader(QHeaderView *header) | |
void setShowGrid | 隐藏线条 |
void selectColumn(int column) | |
void selectRow(int row) | |
void setShowGrid(bool show) | |
void showColumn(int column) | |
void showRow(int row) |
QTreeView
属性字段:
函数 | 作用 |
---|---|
QHeaderView * header() const | 返回header |
QModelIndex indexAbove(const QModelIndex &index) const | 返回上个目录 |
QModelIndex indexBelow(const QModelIndex &index) const | 返回下个 |
void setColumnHidden(int column, bool hide) | 隐藏列 |
void setColumnWidth(int column, int width) | 设置列宽 |
void setExpanded(const QModelIndex &index, bool expanded) | 展开 |
void setExpandsOnDoubleClick(bool enable) | 双击 |
void setFirstColumnSpanned(int row, const QModelIndex &parent, bool span) | |
void setHeader(QHeaderView *header) | 设置表头 |
void setHeaderHidden(bool hide) | 隐藏表头 |
void setIndentation(int i) | |
void setItemsExpandable(bool enable) | 展开 |
void setRootIsDecorated(bool show) | |
void setRowHidden(int row, const QModelIndex &parent, bool hide) | 隐藏行 |
void setSortingEnabled(bool enable) | |
void setTreePosition(int index) | |
void setUniformRowHeights(bool uniform) | |
void setWordWrap(bool on) |
slots:
void collapse(const QModelIndex &index)
void collapseAll()
void expand(const QModelIndex &index)
void expandAll()
void expandToDepth(int depth)
void hideColumn(int column)
void resizeColumnToContents(int column)
void showColumn(int column)
signals:
void collapsed(const QModelIndex &index)
void expanded(const QModelIndex &index)
例子:
QListView
属性字段:
enum Flow { LeftToRight, TopToBottom }//方向
enum LayoutMode { SinglePass, Batched }
enum Movement { Static, Free, Snap }//是否可移动
enum ResizeMode { Fixed, Adjust }
enum ViewMode { ListMode, IconMode }
函数 | 作用 |
---|---|
void setBatchSize(int batchSize) | |
void setFlow(Flow flow) | 方向 |
void setGridSize(const QSize &size) | |
void setLayoutMode(LayoutMode mode) | |
void setModelColumn(int column) | |
void setMovement(Movement movement) | |
void setResizeMode(ResizeMode mode) | |
void setRowHidden(int row, bool hide) | 隐藏 |
void setSelectionRectVisible(bool show) | 选择 |
void setSpacing(int space) | |
void setUniformItemSizes(bool enable) | |
void setViewMode(ViewMode mode) | 显示方式 |
void setWordWrap(bool on) | |
void setWrapping(bool enable) |
例子:
QTableWidget
属性字段:
函数 | 作用 |
---|---|
int columnCount() const | 列数 |
int rowCount() const | 行数 |
int column(const QTableWidgetItem *item) const | 指定的item的列数 |
int row(const QTableWidgetItem *item) const | 指定的item的行数 |
int currentColumn() const | 现在选中的item |
int currentRow() const | |
QTableWidgetItem * currentItem() const | |
QList<QTableWidgetItem *> findItems(const QString &text, Qt::MatchFlags flags) const | 查item |
QTableWidgetItem * itemAt(int ax, int ay) const | |
QList<QTableWidgetItem *> selectedItems() const | |
void removeCellWidget(int row, int column) | 移除 |
void setCellWidget(int row, int column, QWidget *widget) | 添加窗口部件 |
void setColumnCount(int columns) | 列数 |
void setCurrentCell(int row, int column) | 设置现在的ietm |
void setCurrentCell(int row, int column, QItemSelectionModel::SelectionFlags command) | |
void setCurrentItem(QTableWidgetItem *item) | |
void setCurrentItem(QTableWidgetItem *item, QItemSelectionModel::SelectionFlags command) | |
void setHorizontalHeaderItem(int column, QTableWidgetItem *item) | 设置水平标题 |
void setHorizontalHeaderLabels(const QStringList &labels) | |
void setItem(int row, int column, QTableWidgetItem *item) | 设置item |
void setItemPrototype(const QTableWidgetItem *item) | |
void setRangeSelected(const QTableWidgetSelectionRange &range, bool select) | 可选范围 |
void setRowCount(int rows) | 设置行数 |
void setVerticalHeaderItem(int row, QTableWidgetItem *item) | 设置垂直标题 |
void setVerticalHeaderLabels(const QStringList &labels) | |
QTableWidgetItem * takeHorizontalHeaderItem(int column) | 得到标题 |
QTableWidgetItem * takeItem(int row, int column) | 得到item |
QTableWidgetItem * takeVerticalHeaderItem(int row) | 得到标题 |
QTableWidgetItem * verticalHeaderItem(int row) const | |
int visualColumn(int logicalColumn) const | 可见的列 |
QRect visualItemRect(const QTableWidgetItem *item) const | |
int visualRow(int logicalRow) const | 可见的行 |
slots:
void clear()
void clearContents()
void insertColumn(int column)
void insertRow(int row)
void removeColumn(int column)
void removeRow(int row)
void scrollToItem(const QTableWidgetItem *item, QAbstractItemView::ScrollHint hint = EnsureVisible)
signals:
void cellActivated(int row, int column)
void cellChanged(int row, int column)
void cellClicked(int row, int column)
void cellDoubleClicked(int row, int column)
void cellEntered(int row, int column)
void cellPressed(int row, int column)
void currentCellChanged(int currentRow, int currentColumn, int previousRow, int previousColumn)
void currentItemChanged(QTableWidgetItem *current, QTableWidgetItem *previous)
void itemActivated(QTableWidgetItem *item)
void itemChanged(QTableWidgetItem *item)
void itemClicked(QTableWidgetItem *item)
void itemDoubleClicked(QTableWidgetItem *item)
void itemEntered(QTableWidgetItem *item)
void itemPressed(QTableWidgetItem *item)
void itemSelectionChanged()
例子:
QTableWidget *mywidget=new QTableWidget(10,3);
// mywidget->setColumnCount(3);列数
// mywidget->setRowCount(10);行数
QStringList headerlist;
headerlist<<"学号"<<"姓名"<<"照片";
for(int i=1;i<4;i++)
{
mywidget->setItem(i-1,0,new QTableWidgetItem(QString("150033013%0").arg(i)));
mywidget->setItem(i-1,1,new QTableWidgetItem(QString("zxw%0").arg(i)));
mywidget->setItem(i-1,2,new QTableWidgetItem(QIcon(QString(":/Image/my%0.png").arg(i)),""));
}
mywidget->setHorizontalHeaderLabels(headerlist);
mywidget->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);//自动适应
mywidget->setEditTriggers(QAbstractItemView::NoEditTriggers);//禁止编辑
/*
*QAbstractItemView::NoEditTriggers 0 不能对表格内容进行修改
*QAbstractItemView::CurrentChanged 1 任何时候都能对单元格修改
*QAbstractItemView::DoubleClicked 2 双击单元格
*QAbstractItemView::SelectedClicked 4 单击已选中的内容
*QAbstractItemView::EditKeyPressed 8 Editing starts when the platform edit key has been pressed over an item.
*QAbstractItemView::AnyKeyPressed 16 按下任意键就能修改
*QAbstractItemView::AllEditTriggers 31 以上条件全包括
*/
mywidget->setSelectionBehavior(QAbstractItemView::SelectRows); //整行选中的方式
/*
* QAbstractItemView::SelectItems 0 Selecting single items.选中单个单元格
* QAbstractItemView::SelectRows 1 Selecting only rows.选中一行
* QAbstractItemView::SelectColumns 2 Selecting only columns.选中一列
*/
mywidget->setSelectionMode(QAbstractItemView::ExtendedSelection); //设置为可以选中多个目标
/*
*QAbstractItemView::NoSelection 不能选择
*QAbstractItemView::SingleSelection 选中单个目标
*QAbstractItemView::MultiSelection 选中多个目标
*QAbstractItemView::ExtendedSelection QAbstractItemView::ContiguousSelection 的区别不明显,主要功能是正常情况下是单选,但按下Ctrl或Shift键后,可以多选
*/
QTableWidgetItem *columnHeaderItem0 = mywidget->horizontalHeaderItem(0); //获得水平方向表头的Item对象
columnHeaderItem0->setFont(QFont("Helvetica")); //设置字体
columnHeaderItem0->setBackgroundColor(QColor(0,60,10)); //设置单元格背景颜色
columnHeaderItem0->setTextColor(Qt::red); //设置文字颜色
columnHeaderItem0->setTextAlignment(Qt::LeftToRight);//文字对齐方式
QLabel *label=new QLabel;
label->setPixmap(QPixmap(":/Image/my2.png"));
mywidget->setCellWidget(2,2,label);//添加控件
// myidget->setColumnWidth(3,200);
// myidget->setRowHeight(3,60);
mywidget->resizeColumnsToContents();//内容和大小匹配
mywidget->resizeRowsToContents();
mywidget->verticalHeader()->setVisible(false);
mywidget->resize(500,500);
mywidget->show();
QTreeWidget
属性字段:
函数 | 作用 |
---|---|
void addTopLevelItem(QTreeWidgetItem *item) | 顶层 |
void addTopLevelItems(const QList<QTreeWidgetItem *> &items) | |
int columnCount() const | 列数 |
int currentColumn() const | 行数 |
QTreeWidgetItem * currentItem() const现在的item | |
QList<QTreeWidgetItem *> findItems(const QString &text, Qt::MatchFlags flags, int column = 0) const | 查找item |
QTreeWidgetItem * headerItem() const | header |
void insertTopLevelItem(int index, QTreeWidgetItem *item) | 最上面 |
void insertTopLevelItems(int index, const QList<QTreeWidgetItem *> &items) | |
QTreeWidgetItem * invisibleRootItem() const | 根可见 |
QTreeWidgetItem * itemAbove(const QTreeWidgetItem *item) const | 上层 |
QTreeWidgetItem * itemAt(const QPoint &p) const | |
QTreeWidgetItem * itemAt(int x, int y) const | 返回item |
QTreeWidgetItem * itemBelow(const QTreeWidgetItem *item) const | 下层 |
QWidget * itemWidget(QTreeWidgetItem *item, int column) const | itemwidget |
void removeItemWidget(QTreeWidgetItem *item, int column) | remove |
QList<QTreeWidgetItem *> selectedItems() const | 选择的item |
void setColumnCount(int columns) | 设置列数 |
void setCurrentItem(QTreeWidgetItem *item) | 现在的item |
void setCurrentItem(QTreeWidgetItem *item, int column) | |
void setCurrentItem(QTreeWidgetItem *item, int column, QItemSelectionModel::SelectionFlags command) | |
void setFirstItemColumnSpanned(const QTreeWidgetItem *item, bool span) | |
void setHeaderItem(QTreeWidgetItem *item) | 标题 |
void setHeaderLabel(const QString &label) | 标题 |
void setHeaderLabels(const QStringList &labels) | 标题 |
void setItemWidget(QTreeWidgetItem *item, int column, QWidget *widget) | |
int sortColumn() const | |
void sortItems(int column, Qt::SortOrder order) | |
QTreeWidgetItem * takeTopLevelItem(int index) | 得到item |
QTreeWidgetItem * topLevelItem(int index) const | |
int topLevelItemCount() const | |
QRect visualItemRect(const QTreeWidgetItem *item) const |
例子:
QTreeWidget *view=new QTreeWidget;
view->setColumnCount(1);
//第一组
QTreeWidgetItem *group1=new QTreeWidgetItem(view);
group1->setText(0,"group1");
group1->setFlags(Qt::ItemIsUserCheckable|Qt::ItemIsEnabled|Qt::ItemIsSelectable);
group1->setCheckState(0,Qt::Unchecked);
QTreeWidgetItem *item11=new QTreeWidgetItem(group1);
item11->setText(0,"item11");
item11->setFlags(Qt::ItemIsUserCheckable|Qt::ItemIsEnabled|Qt::ItemIsSelectable);
item11->setCheckState(0,Qt::Unchecked);
QTreeWidgetItem *item12=new QTreeWidgetItem(group1);
item12->setText(0,"item12");
item12->setFlags(Qt::ItemIsUserCheckable|Qt::ItemIsEnabled|Qt::ItemIsSelectable);
item12->setCheckState(0,Qt::Unchecked);
QTreeWidgetItem *item13=new QTreeWidgetItem(group1);
item13->setText(0,"item13");
item13->setFlags(Qt::ItemIsUserCheckable|Qt::ItemIsEnabled|Qt::ItemIsSelectable);
item13->setCheckState(0,Qt::Unchecked);
QTreeWidgetItem *item14=new QTreeWidgetItem(group1);
item14->setText(0,"item4");
view->insertTopLevelItem(0,new QTreeWidgetItem((QTreeWidget*)0, QStringList(QString("item1"))));
view->insertTopLevelItem(0,new QTreeWidgetItem((QTreeWidget*)0, QStringList(QString("item2"))));
view->insertTopLevelItem(0,new QTreeWidgetItem((QTreeWidget*)0, QStringList(QString("item3"))));
view->expandAll();//全部展开
view->collapseAll();//全部收敛
view->expand(view->indexAt(QPoint(0,0)));//展开
view->resize(500,500);
view->show();
QListWidget
属性字段:
函数 | 作用 |
---|---|
void addItem(const QString &label) | 增加item |
void addItem(QListWidgetItem *item) | |
void addItems(const QStringList &labels) | |
void closePersistentEditor(QListWidgetItem *item) | |
int count() const | |
QListWidgetItem * currentItem() const | 现在选中的iyems |
int currentRow() const | 现在的行数 |
QList<QListWidgetItem *> findItems(const QString &text, Qt::MatchFlags flags) const | |
void insertItem(int row, QListWidgetItem *item) | 插入 |
void insertItem(int row, const QString &label) | |
void insertItems(int row, const QStringList &labels) | |
bool isSortingEnabled() const | |
QListWidgetItem * item(int row) const | |
QListWidgetItem * itemAt(const QPoint &p) const | 获取item |
QListWidgetItem * itemAt(int x, int y) const | |
QWidget * itemWidget(QListWidgetItem *item) const | 获得widget |
void removeItemWidget(QListWidgetItem *item) | 移除widget |
int row(const QListWidgetItem *item) const | 获取行数 |
QList<QListWidgetItem *> selectedItems() const | 选择的item |
void setCurrentItem(QListWidgetItem *item) | 现在选择的item |
void setCurrentItem(QListWidgetItem *item, QItemSelectionModel::SelectionFlags command) | |
void setCurrentRow(int row) | 设置现在的item |
void setCurrentRow(int row, QItemSelectionModel::SelectionFlags command) | |
void setItemWidget(QListWidgetItem *item, QWidget *widget) | 设置widget |
void setSortingEnabled(bool enable) | |
void sortItems(Qt::SortOrder order = Qt::AscendingOrder) | |
QListWidgetItem * takeItem(int row) | 得到widget |
QRect visualItemRect(const QListWidgetItem *item) const |
slots:
void clear()
void scrollToItem(const QListWidgetItem *item, QAbstractItemView::ScrollHint hint = EnsureVisible)
signals:
void currentItemChanged(QListWidgetItem *current, QListWidgetItem *previous)
void currentRowChanged(int currentRow)
void currentTextChanged(const QString ¤tText)
void itemActivated(QListWidgetItem *item)
void itemChanged(QListWidgetItem *item)
void itemClicked(QListWidgetItem *item)
void itemDoubleClicked(QListWidgetItem *item)
void itemEntered(QListWidgetItem *item)
void itemPressed(QListWidgetItem *item)
void itemSelectionChanged()
例子:
QListWidget *view=new QListWidget;
view->addItem(new QListWidgetItem("first"));
view->addItem(new QListWidgetItem("second"));
view->addItem(new QListWidgetItem("third"));
QLabel *label=new QLabel;
QPixmap map(":/Image/my2.png");
label->setPixmap(map);
QListWidgetItem *item=new QListWidgetItem("forth");
view->addItem(item);
view->setItemWidget(item,label);
connect(view,QOverload<QListWidgetItem *>::of(&QListWidget::itemClicked),[view,map](QListWidgetItem *item){
qDebug()<<view->row(item);
if(view->row(item)==3)
{
QWidget *subwiget=new QWidget;
QLabel *label=new QLabel;
label->setPixmap(QPixmap(":/Image/my2.png"));
QHBoxLayout *layout=new QHBoxLayout(subwiget);
layout->addWidget(label);
subwiget->resize(map.width(),map.height());
subwiget->show();
}
});
view->resize(500,500);
view->show();