QTableView,如何更改拖动多个项目的显示

2023-12-07

我有一个带有我自己实现的 QAbstractItemModel 的 QTableView,我可以在其中拖放多个项目。我的问题是,当拖动项目并尝试将它们放入目标单元格时,用户不太清楚结果是什么。例如,我有以下内容,但我更喜欢像默认窗口显示那样的东西,这使得所有 3 个项目都像一个项目:

我的 QT 表

vs

windows 拖放文件夹


在 eyllanesc 对 QPixmap 的建议之后,我找到了解决问题的正确方法,这样我就可以保留来自模型的 mime 数据。我在 QTreeView 类中重新实现了 startDrag(Qt::DropActions supportActions) ,这样当移动多个对象时,将显示一个图标以及移动的项目数。现在看起来像这样:

void MyTreeView::startDrag(Qt::DropActions supportedActions)
{
    QModelIndexList indexes = selectedIndexes();
    if (indexes.size() == 1)
        return QAbstractItemView::startDrag(supportedActions);
    if (indexes.count() > 0) 
    {
        QMimeData *data = model()->mimeData(indexes);
        if (!data)
           return;
        QRect rect; 
        rect.adjust(horizontalOffset(), verticalOffset(), 0, 0);
        QDrag *drag = new QDrag(this);

        ActionTreeItem* pItem = static_cast<ActionTreeItem*>(indexes[0].internalPointer());
        if (pItem != NULL)
        {
            QPixmap pixmap = myIcon.pixmap(myIcon.actualSize(QSize(32, 32)));
            QPainter *paint = new QPainter(&pixmap);
            paint->setPen(Qt::black);
            paint->setBrush(QBrush(Qt::white));
            QRect numberRect(18, 18, 13, 13);
            paint->drawRect(numberRect);
            paint->drawText(numberRect, Qt::AlignHCenter | Qt::AlignVCenter, QString("%1").arg(indexes.count()));
           drag->setPixmap(pixmap);
        }       
       drag->setMimeData(data);
       Qt::DropAction defaultDropAction = Qt::MoveAction;
       drag->exec(supportedActions, defaultDropAction);
    }
  }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

QTableView,如何更改拖动多个项目的显示 的相关文章

  • 使用链表进行堆排序

    我想知道是否有人曾经使用链表进行堆排序 如果他们可以提供代码 我已经能够使用数组进行堆排序 但尝试在链表中进行排序似乎不切实际 而且在你知道的地方很痛苦 我必须为我正在做的项目实现链接列表 任何帮助将不胜感激 我也用C 答案是 你不想在链表
  • 如何从字符串中提取子字符串直到遇到第二个空格?

    我有一个像这样的字符串 o1 1232 5467 1232 5467 1232 5467 1232 5467 1232 5467 1232 5467 如何仅提取 o1 1232 5467 要提取的字符数并不总是相同 因此 我只想提取直到遇到
  • C#.Net 邮件将进入垃圾邮件文件夹

    我正在从 ASP net Web 应用程序发送电子邮件 邮件发送成功 没有失败 但大多数都进入了垃圾邮件文件夹 请帮助我克服垃圾邮件过滤器 我的发送邮件代码 public void SendMail string FromAddress s
  • 为什么 C 程序使用 Scanf 给出奇怪的输出?

    我目前正在学习 C 编程 并且遇到了这个奇怪的输出 Program will try functionalities of the scanf function include
  • C# 中的 Stack<> 实现

    我最近一直在实现递归目录搜索实现 并且使用堆栈来跟踪路径元素 当我使用 string Join 连接路径元素时 我发现它们被颠倒了 当我调试该方法时 我查看了堆栈 发现堆栈内部数组中的元素本身是相反的 即最近 Push 的元素位于内部数组的
  • 在 C++ 代码中转换字符串

    我正在学习 C 并开发一个项目来练习 但现在我想在代码中转换一个变量 字符串 就像这样 用户有一个包含 C 代码的文件 但我希望我的程序读取该文件并插入将其写入代码中 如下所示 include
  • 在 Mono 中反序列化 JSON 数据

    使用 Monodroid 时 是否有一种简单的方法可以将简单的 JSON 字符串反序列化为 NET 对象 System Json 只提供序列化 不提供反序列化 我尝试过的各种第三方库都会导致 Mono Monodroid 出现问题 谢谢 f
  • 2个对象,完全相同(除了命名空间)c#

    我正在使用第三方的一组网络服务 但遇到了一个小障碍 在我手动创建将每个属性从源复制到目标的方法之前 我想我应该在这里寻求更好的解决方案 我有 2 个对象 一个是 Customer CustomerParty 类型 另一个是 Appointm
  • 如何修复错误:“检测到无法访问的代码”

    我有以下代码 private string GetAnswer private int CountLeapYears DateTime startDate return count String answer GetAnswer Respo
  • Makefile 和 .Mak 文件 + CodeBlocks 和 VStudio

    我对整个 makefile 概念有点陌生 所以我对此有一些疑问 我正在 Linux 中使用 CodeBlocks 创建一个项目 我使用一个名为 cbp2mak 的工具从 CodeBlocks 项目创建一个 make 文件 如果有人知道更好的
  • if constexpr 中的 not-constexpr 变量 – clang 与 GCC

    struct A constexpr operator bool const return true int main auto f auto v if constexpr v A a f a clang 6 接受该代码 GCC 8 拒绝它
  • LinkLabel 无下划线 - Compact Framework

    我正在使用 Microsoft Compact Framework 开发 Windows CE 应用程序 我必须使用 LinkLabel 它必须是白色且没有下划线 因此 在设计器中 我将字体颜色修改为白色 并在字体对话框中取消选中 下划线
  • C++ 指针引用混淆

    struct leaf int data leaf l leaf r struct leaf p void tree findparent int n int found leaf parent 这是 BST 的一段代码 我想问一下 为什么
  • 如何编写一个接受 int 或 float 的 C 函数?

    我想用 C 语言创建一个扩展 Python 的函数 该函数可以接受 float 或 int 类型的输入 所以基本上 我想要f 5 and f 5 5 成为可接受的输入 我认为我不能使用if PyArg ParseTuple args i v
  • 如何高效计算连续数的数字积?

    我正在尝试计算数字序列中每个数字的数字乘积 例如 21 22 23 98 99 将会 2 4 6 72 81 为了降低复杂性 我只会考虑 连续的数字 http simple wikipedia org wiki Consecutive in
  • 如何从 Windows Phone 7 模拟器获取数据

    我有一个 WP7 的单元测试框架 它在手机上运行 结果相当难以阅读 因此我将它们写入 XDocument 我的问题是 如何才能将这个 XML 文件从手机上移到我的桌面上 以便我可以实际分析结果 到目前为止 我所做的是将 Debugger B
  • 任何人都可以清楚地告诉如何在不使用像 这样的预定义函数的情况下找到带有小数值或小数值的指数吗? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 例如 2 0 5 1 414 所以想要 我是 c 的新手 所以请解释简单的逻辑 如果不是复杂的逻辑也足够了 在数学中 从整数取幂到实数
  • .Net Reactive Extensions Framework (Rx) 是否考虑拓扑顺序?

    Net 反应式扩展框架是否按拓扑顺序传播通知以最大限度地减少更新量 就像 Scala Rx 所做的那样 Net 反应式扩展 Rx 是否可以 https github com lihaoyi scala rx wiki How it Work
  • 声明一个负长度的数组

    当创建负长度数组时 C 中会发生什么 例如 int n 35 int testArray n for int i 0 i lt 10 i testArray i i 1 这段代码将编译 并且启用 Wall 时不会出现警告 并且似乎您可以分配
  • ContentDialog Windows 10 Mobile XAML - 全屏 - 填充

    我在项目中放置了一个 ContentDialog 用于 Windows 10 上的登录弹出窗口 当我在移动设备上运行此项目时 ContentDialog 未全屏显示 并且该元素周围有最小的填充 在键盘上可见 例如在焦点元素文本框上 键盘和内

随机推荐

  • Angular:ng-repeat 不起作用

    这是我的代码 我从 w3school 获取的
  • ViewScoped 的工作方式与 RequestScoped 类似 - 为什么?

    我编写了一个 ViewScoped Managed Bean 每次刷新 Web 浏览器中的页面时 该 Managed Bean 似乎都被重新创建 文章为空 它加载一个新的文章对象等等 对我来说 它看起来与 RequestScoped 的行为
  • 在 Windows 7 调试指令中有效的循环语句在 DOSBox 0.74 中不起作用

    我们有一个关于汇编语言循环的活动 我们的任务很简单 显示数字 0 到 9 每个数字之间有空格 我在我们学校的 WINDOWS 7 中使用 debug 命令获得了可以在命令提示符下运行的代码 我的笔记本电脑是 Windows 10 最近我发现
  • 如何在 JavaScript 中使用 C# 枚举值

    我有一个 C 枚举 即类似于 Category cs 的东西 在下拉列表中 我们绑定值 因此 如果用户在下拉列表中选择某个特定值 它将隐藏一个 div 所以我想获取javascript中的枚举值 即想将枚举值与javascript中的一个选
  • 如何在不创建 GLSurfaceView 的情况下检测 OpenGL 功能 (Android)

    在决定是否使用 OpenGL 还是 Canvas 进行图形处理之前 我尝试访问手机的 OpenGL 功能 但是 我可以阅读文档的所有功能都要求您已经拥有有效的 OpenGL 上下文 即 创建一个 GLSurfaceView 并为其分配渲染
  • 让函数按非内置类型的 const 值返回的用例有哪些?

    最近我读到 从函数返回值来限定非内置类型的返回类型 const 是有意义的 例如 const Result operation do something return Result 我正在努力理解这样做的好处 一旦返回对象 调用者肯定会选择
  • .Net 图表 - 具有不同间隔的 X 轴 [重复]

    这个问题在这里已经有答案了 我正在使用 Net 图表 其中 我显示了间隔为 28 天的折线图 这是我的代码 Chart1 ChartAreas ChartArea1 AxisX IntervalOffset 1 Chart1 ChartAr
  • 嘲笑GAE开发服务器?

    我正在尝试在我的开发 GAE 服务器上模拟 HTTPServletRequest 数据 我正在运行 Eclipse 插件 1 3 7 我尝试这样做 package com FOO madservice servlet mock import
  • JAVAFX 11 不支持 ECMAScript6 和 css3

    我正在使用 JAVA FX 11 的一些绘图工具创建一个网页浏览exp 但是在尝试加载具有以下功能的javascript代码时let and const使用这些变量只是被忽略并抛出异常 我使用的是 Maven 3 8 0 Java 1 8
  • PHP:gettext 需要 LC_MESSAGES 目录吗?

    为了翻译我的 PHP 应用程序 我使用在 gettext 模块中编译的方法 这是根据文档制作的翻译目录树 locale cs CZ LC MESSAGES messages po messages mo de DE LC MESSAGES
  • 如何显示等待 gif 直到图像完全加载

    大多数流行的浏览器在渲染图像时 会在加载时从上到下逐行显示图像 我有一个要求 即在加载图像时应显示等待 gif 当图像完全加载时 应该显示它而不是等待 gif 你可以使用 jQueryload method 你可以看这里 http jque
  • BAT 文件:打开新的 cmd 窗口并在其中执行命令

    我正在尝试在 BAT 文件中打开一个新的命令窗口 start windir system32 cmd exe 打开后 我想在新窗口中执行 BAT 命令 echo test in new window 我怎样才能做到这一点 您可能已经找到了答
  • 用Activity实现OnClickListener有什么效果?

    我不明白为什么我必须实现 OnClickListener 才能使用 OnClick 方法 假设这段代码 public class KlickitestActivity extends Activity implements OnClickL
  • 为什么提示用户输入字符串/选项后字符串比较无法按预期工作?

    除了空格和不需要的百分号之外 这是编写这些批处理代码行的正确方法吗 name cls echo now that we ve got your color figured out what about your name echo simp
  • 如何使用第一个字符作为部分名称

    我正在使用核心数据作为表视图 并且我想使用每个结果的第一个字母作为节标题 这样我就可以在侧面获取节索引 有没有办法用关键路径来做到这一点 像下面这样 我用的地方name firstLetter as the sectionNameKeyPa
  • 从 Bat 文件执行 Java 时包含 Jar

    我想从 bat 文件执行 Java 类 它包括使用opencsv jar 下面是代码 echo off set path PATH C Program Files x86 Java jdk1 6 0 bin javac cp opencsv
  • 如何从更深的目录中的文件导入模块?

    假设我的项目结构如下 project important py files file1 py 文件 important py 包含重要类 如何从 file1 导入类 重要 而 file1 是正在执行的 python 文件 我找到的唯一解决方
  • 以编程方式将 iPhone 重置为出厂设置

    有没有一种方法可以让我们以编程方式将 iPhone 设置重置为出厂默认设置 我们在 设置 应用程序的 常规 部分中有一个 重置 选项 我们可以通过编程方式访问它吗 谢谢 苏德希尔 SDK 不支持此功能 也许你可以对越狱手机做一些事情 这显然
  • 如何在 Matlab 中隔离单元测试

    给定一个中等规模 科学 的代码库 如何继续构建单元测试套件 我需要测试本地函数以及隐藏方法 但到目前为止我不想修改 扩展类 这是可能的还是我需要以某种方式注入测试用例 我该如何最好地实施这个 Thanks PS 我知道单元测试通常是指测试整
  • QTableView,如何更改拖动多个项目的显示

    我有一个带有我自己实现的 QAbstractItemModel 的 QTableView 我可以在其中拖放多个项目 我的问题是 当拖动项目并尝试将它们放入目标单元格时 用户不太清楚结果是什么 例如 我有以下内容 但我更喜欢像默认窗口显示那样