本文主要总结Qt中函数void QTreeView::expand(const QModelIndex &index)基本用法,用该函数可以展开指定树形节点。如果要展开所有节点,可以用void QTreeView::expandAll()函数。
1.1关键函数讲解
QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const Q_DECL_OVERRIDE;
该函数第一个和第二个参数是树形控件的索引项,第三个参数是表示上一级节点的索引项。如果只想展开一级节点,则不用填写第三个参数选择默认的;如果想要连续展开一级节点和二级节点,则需要用到第三个参数,用法为第三个参数挂载上一级节点的索引作为父节点。
1.2下面是具体用法代码示例
/*设置树模型*/
treeView = new QTreeView();
treeView->setModel(item);
treeView->header()->hide();
treeView->setEditTriggers(QAbstractItemView::NoEditTriggers);
treeView->expand(item->index(0,0));
treeView->expand(item->index(0,0,item->index(0,0)));
其中QStandardItemModel *item = new QStandardItemModel();需要自己挂载模型item的内容项。
参考内容:
https://doc.qt.io/archives/4.6/qtreeview.html#expand(参考:Qt官方文档)
本文主要总结Qt中函数void QTreeView::expand(const QModelIndex &index)基本用法,用该函数可以展开指定树形节点。如果要展开所有节点,可以用void QTreeView::expandAll()函数。1.1关键函数讲解QModelIndex index(int row, int column, const QModelIndex &am...
QListView与QTreeView一样,也是采取的mvc模式,添加数据时,用相应的模式
1、初始化时添加数据
QStandardItemModel *model = new QStandardItemModel(this); //可以把这行放到头文件里面
QStandardItem *item = new QStandardItem("item1");
model->appendRow(item);
item = new QStandardItem("item2
//下面是初始化 treeView_enumdefine
if(tree_model==NULL) {tree_model = new QStandardItemModel(ui->treeView_enumdefine);}
tree_model->setHorizontalHeaderLabels(QStringList()<<QStringLiteral("enum定义")<<QStri
此类用作从 QAbstractItemModel 派生的项目模型的索引。项目视图、委托、选择模型使用索引来定位模型中的项目。
模型使用 QAbstractItemModel::createIndex() 函数创建新的 QModelIndex 对象。可以使用 QModelIndex 构造函数构造无效的模型索引。在引用模型中的顶级项目时,无效索引通常用作父索引。
模型索引是指模型中的项目,并包含指定它们在这些模型中的位置所需的所有信息。每个索引位于给定的行和列中,并且可
QModelIndex有三个要素:行row 列column 父节点索引parent
但是注意我们并不能定义一个QModelIndex
QModelIndex的构造函数QModelIndex()的功能是创建一个新的空的QModelIndex
QModelIdex()是一个空索引,它其实可以代表任意model中的顶层节点,例如TableModel中每个Item的父节点都是顶层节点,所以每个Item的索引中的parent都是QModelIndex;【1】
可以获得QModelIndex 的方法有两种:
1.通过M
近来在做Qt界面设计相关的项目,由于主窗体的框架是用QtQuick搭建的,所以必须从传统的C++开发转向JS风格的QML开发,QML我理解他的话就是一个JavaScript风格的描述性说明语言,至于QtQuick则相当于Qt官方为qml开发提供的一个通用强大的组件库吧,QML与QtQuick的关系相当于C++与STL吧。扯远了,说白了就是在项目的开发过程中,需要构建一个提供导航功能的流程树,其所有节点默认是展开的,点击打开其子节点对应的界面。
树控件TreeView...
void DevMainWindow::indexCurTreeItem(QModelIndex index)
QTableWidgetItem *tableItem = ui->tableWidget->item(index.row(), 5);
qDebug() "item.text:::" tableItem->text();
itemText1
```css
QTreeView::branch:has-siblings:!adjoins-item {
border-image: url(:/images/treeview-vline.png) 0;
QTreeView::branch:has-siblings:adjoins-item {
border-image: url(:/images/treeview-branch-more.png) 0;
QTreeView::branch:!has-children:!has-siblings:adjoins-item {
border-image: url(:/images/treeview-branch-end.png) 0;
QTreeView::branch:has-children:!has-siblings:closed,
QTreeView::branch:closed:has-children:has-siblings {
border-image: none;
image: url(:/images/treeview-expand.png);
QTreeView::branch:open:has-children:!has-siblings,
QTreeView::branch:open:has-children:has-siblings {
border-image: none;
image: url(:/images/treeview-collapse.png);
在上面的样式表中,我们使用了 `border-image` 属性来设置虚线图片作为节点间的分隔符,同时还使用了 `image` 属性来设置展开和折叠图标。其中,`:has-children` 伪状态表示该节点有子节点,`:has-siblings` 表示该节点有兄弟节点,`:adjoins-item` 表示该节点与其他节点相邻,`:closed` 表示该节点处于折叠状态,`:open` 表示该节点处于展开状态。
需要注意的是,为了保证样式表的正确应用,需要将 QTreeView 的 `setStyleSheet()` 方法中的 `QTreeView` 替换为 `QTreeView::branch`,即:
```python
tree_view.setStyleSheet("""
QTreeView::branch:has-siblings:!adjoins-item {
border-image: url(:/images/treeview-vline.png) 0;