精华内容
下载资源
问答
  • Qt TreeView的使用步骤

    万次阅读 2014-06-03 14:51:44
    这篇文章讲述如何实现如下的一个treeView. 首先设置treeView的外框, 大小, model等 1 QStandardItemModel *goodsModel = new QStandardItemModel(0, 4,this); 2 3 ui.treeView_->...
     
    这篇文章讲述如何实现如下的一个treeView.
    image 
    1.首先设置treeView的外框, 大小, model等
     QStandardItemModel *goodsModel = new QStandardItemModel(0, 4,this);
     
     ui.treeView_->setColumnWidth(0,50); 
     ui.treeView_->setColumnWidth(1,200); 
     ui.treeView_->setColumnWidth(2,200); 
     ui.treeView_->setColumnWidth(3,200); 
     goodsModel->setHeaderData(0, Qt::Horizontal, tr("No")); 
     goodsModel->setHeaderData(1, Qt::Horizontal, tr("name")); 
     goodsModel->setHeaderData(2, Qt::Horizontal, tr("value1")); 
     goodsModel->setHeaderData(3, Qt::Horizontal, tr("value2"));
     
     ui.treeView_->setModel(goodsModel);
     
    2.然后把数据填充到item中

    for (int i = 0; i < 4; ++i) {

            QList<QStandardItem *> items;         for (int i = 0; i < 3; ++i)         {             QStandardItem *item = new QStandardItem(QString("item %0").arg(i));

                if (0 == i)                 item->setCheckable(true);             items.push_back(item);         }         goodsModel->appendRow(items);

            for (int i = 0; i < 4; ++i)         {             QList<QStandardItem *> childItems;             for (int i = 0; i < 3; ++i)          {              QStandardItem *item = new QStandardItem(QString("%0").arg(i));                         if (0 == i)                  item->setCheckable(true);

                 childItems.push_back(item);          }             items.at(0)->appendRow(childItems);            }

    }

     
     
    3.设置treeview 能够被多选
      ui.treeView_->setSelectionMode(QAbstractItemView::ExtendedSelection);
    4.设置右键选择菜单
    void TreeView::contextMenuEvent(QContextMenuEvent *event) 
    { 
    
         QMenu *pMenu = new QMenu(ui.treeView_); 
         QAction* buildItem = pMenu->addAction(tr("build")); 
         pMenu->exec(QCursor::pos()); 
    }
     
    展开全文
  • 今天测试Qt程序的时候碰到了2个小问题:1. 如何在TreeView中进行排序。标准做法当然是使用QSortFilterProxyModel,起先我自定义的Model类是从QAbstractProxyModel派生出来的,做了一些定制的修改,当我想排序的时候...

    今天测试Qt程序的时候碰到了2个小问题:

    1. 如何在TreeView中进行排序。

    标准做法当然是使用QSortFilterProxyModel,起先我自定义的Model类是从QAbstractProxyModel派生出来的,做了一些定制的修改,当我想排序的时候,我把基类改成QSortFilterProxyModel,发现有好些不兼容的地方。把我自定义的Proxy Model的函数全部屏蔽掉以后一切正常,因此,如果你需要自定义的Proxy Model,从QSortFilterProxyModel派生吧,让你一开始就能避免很多潜在问题。后面我还得看看我的哪些函数出了错误。

    另外,View缺省是不排序的,要让你可以在点击某个column的header时进行排序,需要设置sortingEnabled这个属性。

     

    2.改变选中的item后,只有我focus的那一列对选中状态有更新,对于未涉及到的column,需要刷新或者通过其他方式重绘的时候才能更新。

    因为我做了好几处地方的修改,有派生的View,有派生的Model,还有Proxy Model,因此一时之间也不知道到底是哪里出了错,修改过下面几个地方:

    - Model insert column的时候通知proxy model,proxy model将此事件通知view,我原先以为view不知道我column的信息。

    - 设置了新的proxy model后调用reset,以为这样column的信息会被刷新。我以为view缺省认为我的proxy model只有一个column。

    - 修改allColumnsShowFocus,这样确实可以解决一个column更新的问题,但是当你一次选中多行(row)的时候,问题依然存在。

    - 还做了一些其他地方的修改,我自己都不记得有哪些了。

    其实问题在于,我派生的QTreeView并重载了selectionChanged方法,结果我当时写这个方法的时候只是为了测试一下是不是会被调用,留着看看后面有没有地方需要被用到,结果忘记调用基类的方法QTreeView::selectionChanged。

     

    哎,真是破费周折啊!看来,不管是写公司的code,还是自己处于学习的目的写一些code,都要一样的严谨、写一段code就把一段code理解清楚。

     

    展开全文
  • Qt treeView的展开折叠按钮的设置

    千次阅读 2017-12-08 15:34:26
    Qt tireeView自带的展开折叠按钮是三角形的,实在是太难看了,想要换个风格,在网上找了半天,只是找到 treeView->setStyleSheet(styleThree)这个函数,能解释具体怎么用的文章少之又少,不过最终还是让我找到了一...

    Qt tireeView自带的展开折叠按钮是三角形的,实在是太难看了,想要换个风格,在网上找了半天,只是找到 treeView->setStyleSheet(styleThree)这个函数,能解释具体怎么用的文章少之又少,不过最终还是让我找到了一篇!


    Qt利用setStyleSheet设置样式

    作者: Joven_xxx

    Qt中设置按钮或QWidget的外观是,可以使用QT Style Sheets来进行设置,非常方便。
    可以用setStyleSheet("font: bold; font-size:20px; color: rgb(241, 70, 62); background-color: green");来进行设置,其他的样式介绍如下:
    font: bold;是否粗体显示
    border-image:"";用来设定边框的背景图片。
    border-radius:5px;用来设定边框的弧度。可以设定圆角的按钮
    border-width: 1px;边框大小


    font-family:"";来设定字体所属家族,
    font-size:20px;来设定字体大小
    font-style:"";来设定字体样式
    font-weight:20px;来设定字体深浅
     background-color: green;设置背景颜色
    background:transparent;设置背景为透明
    color:rgb(241, 70, 62);设置前景颜色
    selection-color:rgb(241, 70, 62);用来设定选中时候的颜色


    可以使用border-top,border-right,border-bottom,border-left分别设定按钮的上下左右边框,
    同样有border-left-color, border-left-style, border-left-width.等分别来设定他们的颜色,样式和宽度



    将网上一去二三里的格式拔了过来,表示很好用

        QString styleThree = "QTreeView{\
                    border: 1px solid lightgray;\
            }\
            QTreeView::item {\
                    height: 25px;\
                    border: none;\
                    background: transparent;\
                    color: black;\
            }\
            QTreeView::item:hover {\
                    background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,stop: 0 rgb(255, 220, 130), stop: 0.5 rgb(255, 220, 130), stop: 1.0 rgb(255, 230, 150));\
            }\
            QTreeView::item:selected {\
                    background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,stop: 0 rgb(255, 200, 100), stop: 0.5 rgb(255, 230, 150), stop: 1.0 rgb(255, 240, 150));\
            }\
            QTreeView::branch:open:has-children {\
                    image: url(展开时图片path);\
            }\
            QTreeView::branch:closed:has-children {\
                    image: url(折叠时图片path);\
            }";

    附上他的详细讲解http://blog.csdn.net/liang19890820/article/details/52606662

    展开全文
  • str += QStringLiteral("当前选中:%1\nrow:%2,column:%3\n").arg(index.data().toString()) .arg(index.row()).arg(index.column()); str += QStringLiteral("父级:%1\n").arg(index.parent().data()....
  • qt qml treeview 树控件

    热门讨论 2015-01-29 10:31:41
    qt qml 树控件。 /递归树显示 /左侧一个箭头,点击可展开显示子树 /选中节点变色 /节点点击事件 /tag属性,携带类似id的数据
  • Qt简单 TreeView实现

    千次阅读 2012-02-27 12:42:39
    这篇文章讲述如何实现如下的一个treeView. 首先设置treeView的外框, 大小, model等 QStandardItemModel *goodsModel = new QStandardItemModel(0, 4,this); ui.treeView_->setColumnWidth(0,50); ...

    这篇文章讲述如何实现如下的一个treeView.

    image

    首先设置treeView的外框, 大小, model等

    QStandardItemModel *goodsModel = new QStandardItemModel(0, 4,this);
     
     ui.treeView_->setColumnWidth(0,50); 
     ui.treeView_->setColumnWidth(1,200); 
         ui.treeView_->setColumnWidth(2,200); 
         ui.treeView_->setColumnWidth(3,200); 
         goodsModel->setHeaderData(0, Qt::Horizontal, tr("No")); 
         goodsModel->setHeaderData(1, Qt::Horizontal, tr("name")); 
         goodsModel->setHeaderData(2, Qt::Horizontal, tr("value1")); 
         goodsModel->setHeaderData(3, Qt::Horizontal, tr("value2"));
     
         ui.treeView_->setModel(goodsModel);


    然后把数据填充到item中


    for (int i = 0; i < 4; ++i) 
         {
     
             QList<QStandardItem *> items; 
             for (int i = 0; i < 3; ++i) 
             { 
                 QStandardItem *item = new QStandardItem(QString("item %0").arg(i));
     
                 if (0 == i) 
                     item->setCheckable(true); 
                 items.push_back(item); 
             } 
             goodsModel->appendRow(items);
     
             for (int i = 0; i < 4; ++i) 
             { 
                 QList<QStandardItem *> childItems; 
                 for (int i = 0; i < 3; ++i) 
              { 
                  QStandardItem *item = new QStandardItem(QString("%0").arg(i));            
                  if (0 == i) 
                      item->setCheckable(true);
     
                  childItems.push_back(item); 
              } 
                 items.at(0)->appendRow(childItems);    
             }
     
         }


    第三步设置treeview 能够被多选

    ui.treeView_->setSelectionMode(QAbstractItemView::ExtendedSelection);


    第三步设置右键选择菜单

    void TreeView::contextMenuEvent(QContextMenuEvent *event) 
     { 
         QMenu *pMenu = new QMenu(ui.treeView_); 
         QAction* buildItem = pMenu->addAction(tr("build")); 
         pMenu->exec(QCursor::pos()); 
     }

    转自 http://www.cnblogs.com/sld666666/archive/2011/02/15/1955179.html

    展开全文
  • QtTreeView修改分支样式

    千次阅读 2016-12-14 20:39:05
    TreeView
  • 获取TreeView选中焦点(小技巧)

    千次阅读 2007-06-28 15:07:00
    发现一位同志,发了一封邮件给我,...大家都知道TreeView控件的话,选中的话是会记录当前选中节点,并触发服务器端事件的.说白了就是要刷新了.本来也没事了.但这里有个问题.这个TreeView的话,是在一个容器里面,大家也看到
  • QtTreeView的右键菜单实现

    千次阅读 2012-08-21 06:53:40
    1、选中TreeView中的Item,右键弹出上下文菜单 实现 1、在使用TreeView右键菜单之前,要setContextMenuPolicy并且connect上下文菜单请求信号 setContextMenuPolicy(Qt::CustomContextMenu); connect(this,...
  • 实现qt中的treeView中的右键的菜单栏的功能和双击效应,还必须大于50字,说了就这么多呀,还是不够,见谅,为了凑字
  • 在做设备列表的时候,发现QTreeView 被选中后不会拓宽到整个列宽,入下图 这就导致界面极其不美观,特别是需要对一些设备做一些特殊处理的时候,不如设置背景色等等; 解决办法: 1 QListView 不会出现这种...
  • Qt qml treeview 树控件

    千次阅读 2016-11-30 17:08:33
    qml并没有提供树控件,只能自己写了。model仍然用ListModel对象,弄成层级的就行。delegate必须用loader动态的增加子控件,如此而已。 【先看效果】 【下载】 ... 1 import QtQuick 2.1 2 import QtQuick.C
  • unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls;type TForm1 = class(TForm) TreeView1: TTreeView; Button1:
  • 项目做到后期,进行局部美化的时候发现了问题,在treeview框选择状态下会有虚线。 其实,不仅是treeview,tableview,listview,乃至button在有焦点...setFocusPolicy(Qt::NoFocus); // 去除item选中时的虚线边框 ...
  • TreeView节点选中问题

    千次阅读 2012-06-26 15:14:28
    实现选中树父节点,子节点选中,子节点全部选中时,父节点选中 后台代码: using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web....
  • 迄今为止功能最全,最好用的qml树控件。 包含功能,任意位置删除节点、任意位置增加节点,节点重命名,背景颜色定制等功能。
  •  treeView1.SelectedNode = nodes[i];  nodes = nodes[i].Nodes;  isSelected = true;  break;  }  }  if (isSelected != true)  {  return;  }  }     转载于:...
  • 需求:在TreeView列表中空白处点击鼠标时能取消当前已经选中的项目。 查文档,发现与鼠标点击相关的信号只有pressed和clicked。而它们仅在点击有数据的地方时才会触发,点空白处是不会触发的。 最后发现只能自己...
  • 网上查了不少,发现都是要设置属性的,可这根本没法设置。...直接改被选中项的innertext。 TreeNode trsender = projectlistbind.SelectedNode; // 清空所有结点的font TreeNodeCollection tnc = trse...
  • treeview 判断节点是否被选中单判断SelectedNode!=null不可以 还要加入事件
  • Qt 5.12--控件TreeView介绍

    千次阅读 2020-01-06 07:20:09
    Qt 5.12学习笔记--控件TreeView介绍1 简介2 属性2.1 currentIndex : QModelIndex2.2 itemDelegate : Component2.3 model : QAbstractItemModel2.4 rootIndex : QModelIndex2.5 section2.6 selection : ...
  • 遍历TreeView得到选中的节点

    千次阅读 2006-11-27 22:47:00
    #region "递归TreeView,把所有被选中的节点ID记录到ArrayList中" ///递归TreeView,把所有被选中的节点ID记录到ArrayList中 private void RecursiveTree(TreeView tree) { TreeNodeCollection nodes = tree....
  • 选中时, treeView 的 selection M odel 会发出 selectionChanged 的信号,将该信号与槽函数进行连接,在槽函数中我们可以通过 index 获得所选 Item 的内容;通过顶层节点没有 parent 的特点来计算所选 Item 的...
  • 本文主要对Qt CheckBox的常态和选中状态进行自定义显示设置,以及TreeView中使用复选框时其选中状态的显示样式进行设置 主要通过设置StyleSheet实现 示例代码 // init treeview model QStandardItemModel* model = ...
  • 如何判断TreeView选中节点

    千次阅读 2008-04-19 19:15:00
    我发现如果在TreeView的单击事件中获取e.Node这个节点不一定选中节点,在网上查了一下用这个方法不知道行不行,周一试一下。 if (e.Button == MouseButtons.Right)//判断你点的是不是右键 { Point ClickPoint = ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 437
精华内容 174
关键字:

qttreeview选中