QT中QTreeView与QAbstractItemModel使用中QTreeViwe的美化
2013-09-04 20:52
1341 查看
//QTreeView中节点展开过程中自动调整表头的列宽,使被展开的节点不会被遮住
ui->treeView_Comm_SCL->header()->setResizeMode(QHeaderView::ResizeToContents);
//在QAbstractItemModel的派生类中进行QTreeView显示的美化:
//在data中可以设置树节点使用的图标
QVariant
ServerModel::data(const
QModelIndex
&index,
int
role)
const
//在headerData中可以设置表头的图标与表头每列所占的初始化宽度,避免树节点被遮挡
QVariant
ServerModel::headerData(int
section,
Qt::Orientation
orientation,
int
role)
const
ui->treeView_Comm_SCL->header()->setResizeMode(QHeaderView::ResizeToContents);
//在QAbstractItemModel的派生类中进行QTreeView显示的美化:
//在data中可以设置树节点使用的图标
QVariant
ServerModel::data(const
QModelIndex
&index,
int
role)
const
{
if(role != Qt::DisplayRole
&& role != Qt::DecorationRole)
return QVariant();
ServerNode* node = NodeFromIndex(index);
if(0 == node)
return QVariant();
if(Qt::DisplayRole == role)
{
switch(index.column())
{
case 0:
return node->NodeName();
case 1:
// return node->NodeComment();
return node->NodeValue();
default:
return QVariant();
}
}
else if(Qt::DecorationRole == role) //set icon for tree view
{
switch (index.column())
{
case 0:
return node->NodeIcon();
default:
return QVariant();
}
}
return QVariant();
}
//在headerData中可以设置表头的图标与表头每列所占的初始化宽度,避免树节点被遮挡
QVariant
ServerModel::headerData(int
section,
Qt::Orientation
orientation,
int
role)
const
{
if(orientation == Qt::Horizontal && role == Qt::DisplayRole)
{
if(section == 0)
{
return QObject::trUtf8("Model Node Name");
}
else if(section == 1)
{
return QObject::trUtf8("Comment");
}
return QVariant();
}
//set Icon for QTreeView header
if(orientation == Qt::Horizontal && role == Qt::DecorationRole)
{
if(section == 0)
{
return QIcon(QPixmap(QString::fromUtf8(":/Widget/Catalogue/WidgetIcon/Catalogue/tree.png")));
}
else if(section == 1)
{
QIcon listIcon(QPixmap(QString::fromUtf8(":/Widget/Catalogue/WidgetIcon/Catalogue/list.png")));
return listIcon;
}
else
{
return QVariant();
}
}
//set Colume width
if(orientation == Qt::Horizontal && role == Qt::SizeHintRole)
{
if(section == 0)
{
return QSize(300,20);
}
else if(section == 1)
{
return QSize(100,20);
}
else
{
return QVariant();
}
}
return QVariant();
}
相关文章推荐
- Qt中QAbstractTableModel、QItemDelegate的联合使用
- QAbstractItemModel 使用
- 在QML应用中使用VisualItemModel让QML Item成为model来显示数据
- QAbstractTableModel 和委托的结合使用
- QT之ComboBox角色使用QAbstractListModel
- Qt:Quick:QAbstractTableModel的使用示例
- Qt中Qtableview 的使用2(QStandardItemModel模型)
- QAbstractListModel:Qml 使用C++model
- QAbstractTableModel的使用
- 简单描述QAbstractItemModel::dataChanged() 与 QAbstractItemModel::data() 的关系
- QTableView与QAbstractTableModel的使用
- QAbstractItemModel 数据更新
- Qt编程27:QStandardItemModel与QTreeView的使用(显示目录下文件)
- (五)Qt实现自定义模型基于QAbstractItemModel
- 使用PHPCB为EditPlus添加PHP代码美化工具
- QModelIndex的使用
- Effective Java Item7-不使用Finalizers
- showModelDialog的使用(一)
- Dropthings 2.6 数据访问使用了ado.net data model
- @ModelAttribute注释使用