【问题标题】:QTreeView::dropMimeData - setting values for a new childQTreeView::dropMimeData - 为新孩子设置值
【发布时间】:2015-01-26 22:50:07
【问题描述】:

我正在尝试将一些 mime 编码文本放到树视图上。它正在工作 - 调用了 dropMimeData() 方法,我可以将 mime 数据解码为被删除的字符串,我可以将一个孩子插入到视图中显示的模型中,但是......我找不到将新项目/行的文本值设置为拖放的字符串(或任何字符串)的方法。

这是我在 dropMimeData() 方法中尝试过的一些代码:

if ( ( row == -1) && (column == -1) && parent.isValid() ) {
   int mdlidx = this->data(parent, Qt::DisplayRole).ModelIndex;
   qDebug() << "mdlidx: " << mdlidx;

   // treet text - the text of the cell that gets dropped onto
   QString tt = this->data(parent, Qt::DisplayRole).toString();
   qDebug() << "tree text: " << tt;

   TreeItem *item = this->getItem(parent);

   int ccnt = item->childCount();
   qDebug() << "ccnt: " << ccnt ;

   if ( item->insertChildren(0, 1, 0) ) {
       qDebug() << "Child Inserted";

       // how do I access the new child item here ???
   } else {
       qDebug() << "Failed";
   }

如何访问新的子项以设置在视图中可见的文本?

我正在使用 QStandardItemModel,如果这有什么不同的话。

【问题讨论】:

    标签: qt


    【解决方案1】:

    我对此的解决方案是创建一个信号和插槽 - 我在 dropMimeData() 方法中对信号进行表情,并且插槽位于具有视图和模型的代码的一部分中,因此可以轻松更新模型。

    我使用信号发送 mime 数据和父级。

    我不确定这是否是正确的做法,但它确实有效。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-23
      • 2021-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-23
      • 2018-10-09
      • 2020-08-07
      相关资源
      最近更新 更多