【问题标题】:add checkbox to qtreewidgetitem将复选框添加到 qtreewidgetitem
【发布时间】:2014-04-16 10:33:37
【问题描述】:

我想在我的qtreewigetitem 中添加一个复选框,我尝试将此代码添加到setflag,然后我添加项目是可选的,也许这会解决我的问题,但什么也没发生,请你帮我怎么做我可以在我的项目中添加check box 吗? 提前谢谢你

m_eventList->addTopLevelItem(new QTreeWidgetItem);
       QTreeWidgetItem *item = m_eventList->topLevelItem(m_eventList->topLevelItemCount()-1)

    item->setFlags(item->flags() | Qt::ItemIsUserCheckable |Qt::ItemIsSelectable);

【问题讨论】:

    标签: c++ qt qtreewidgetitem


    【解决方案1】:

    默认情况下,QTreeWidgetItem 中已经设置了 ItemIsUserCheckable 标志,所以这不是问题。

    你需要做的就是做

    item->setCheckState(Qt::Unchecked);
    

    你应该会看到一个复选框。

    【讨论】:

      【解决方案2】:

      尝试重新组织你的代码:

      QTreeWidgetItem* item = new QTreeWidgetItem();
      item->setFlags(item->flags() | Qt::ItemIsUserCheckable | Qt::ItemIsSelectable);
      item->setCheckState(Qt::Checked);
      m_eventList->addTopLevelItem(item);
      

      另一种方法是编写自己的模型并覆盖flags() 方法。在这个方法中,你返回

      Qt::ItemFlags flags = Qt::ItemIsEnabled | Qt::ItemIsSelectable;
      if (index.column() == 0)
      {
          flags |= Qt::ItemIsUserCheckable;
      }
      return flags;
      

      【讨论】:

        【解决方案3】:

        Qt::ItemIsUserCheckableQt::ItemIsSelectable 是 QTreeWidget 的默认设置。

        item->setCheckState(column, Qt::Unchecked) 没问题。

        https://doc.qt.io/qt-5/qtreewidgetitem.html#flags

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-02-07
          • 2015-11-22
          • 2015-08-13
          • 2012-07-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多