类QStandardItemModel有几个方法不是很明白,求帮助!

矛盾论 2014-06-07 10:01:05
下面的代码:
方法二:自行设置树型结构。

"Treeview.h"文件

#include <QtGui>
class TreeView :public QTreeView
{
public:
TreeView();
void iterateOverItems();
QList<QStandardItem*> returnTheItems();
void mouseDoubleClickEvent(QMouseEvent *event);
private:
QStandardItemModel *model;
};
"Treeview.cpp"文件

#include "treeview.h"
TreeView::TreeView() : QTreeView()
{
QTextCodec::setCodecForTr(QTextCodec::codecForName("GBK"));
model = new QStandardItemModel(4,2);
model->setHeaderData(0, Qt::Horizontal, tr("Service"));
model->setHeaderData(1, Qt::Horizontal, tr("Details"));
QStandardItem *item1 = new QStandardItem("avahi-daemon");
item1->setIcon(QIcon("gparted.png"));
QStandardItem *item2 = new QStandardItem("bluetooth");
item2->setIcon(QIcon("gparted.png"));
QStandardItem *item3 = new QStandardItem("crond");
item3->setIcon(QIcon("gparted.png"));
QStandardItem *item4 = new QStandardItem("cups");
item4->setIcon(QIcon("gparted.png"));
model->setItem(0, 0, item1);
model->setItem(1, 0, item2);
model->setItem(2, 0, item3);
model->setItem(3, 0, item4);
QStandardItem *item5 = new QStandardItem("fifth");
item4->appendRow(item5);
QModelIndex parent;
for (int i = 0; i < 4; ++i) {
parent = model->index(0, 0, parent);
model->insertRows(0, 1, parent);
model->insertColumns(0, 1, parent);
QModelIndex index = model->index(0, 0, parent);
model->setData(index, i);
}
this->setModel(model);
}
QList<QStandardItem*> TreeView::returnTheItems()
{
return model->findItems("*", Qt::MatchWildcard | Qt::MatchRecursive);
}
void TreeView::iterateOverItems()
{
QList<QStandardItem*> list = returnTheItems();

foreach (QStandardItem* item, list) {
qDebug() << item->text();
}
}
void TreeView::mouseDoubleClickEvent(QMouseEvent *event)
{
if (event->button() == Qt::LeftButton) {
QModelIndex index0 = currentIndex();
qDebug() << index0.data().toString();
}
}
"Main.cpp"文件

#include <QtGui/QApplication>
#include "treeview.h"

int main(int argc, char *argv[])
{
QApplication app(argc, argv);
TreeView view;
view.setEditTriggers(QAbstractItemView::NoEditTriggers);
view.header()->setResizeMode(QHeaderView::ResizeToContents);
view.resize(300,280);
view.iterateOverItems();
view.setWindowTitle(QObject::tr("Linux 服务管理"));
view.show();
return app.exec();
}
显示:

其中这段代码没看懂:
parent = model->index(0, 0, parent);
model->insertRows(0, 1, parent);
model->insertColumns(0, 1, parent);
QModelIndex index = model->index(0, 0, parent);
model->setData(index, i);
所使用的那几个函数index(0, 0, parent)、insertRows(0, 1, parent)、insertColumns(0, 1, parent)分别是什么意思呢?
谢谢!
...全文
288 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
feilinhe 2014-06-07
  • 打赏
  • 举报
回复
Qt自带的assistant上面有详细的解释呀,

16,225

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧