【问题标题】:Qt QTreeWidget how to get the row a QComboBox is onQt QTreeWidget如何获取QComboBox所在的行
【发布时间】:2013-09-17 01:13:12
【问题描述】:

我有一个 QTreeWidget,其中有几个 QComboBoxes 作为 QTreeWidgetItems。我正在尝试找到一种方法来获取所选 QComboBox 的当前 QTreeWidget 行。 ui->sensorTree 是 QTreeWidget。我的树看起来像这样:

parent0
    child0    QComboBox0
    child1    QComboBox1
parent1
    child0    QComboBox0    QComboBox0
    child1    QComboBox1    QComboBox1

所以如果选择了 QComboBox0,我想返回 0。

更新:

int index = ui->sensorTree->currentIndex().row();

这给了我正确的行。现在的问题是不必选择行来更改 QComboBox。我需要的是连接 QComboBox.indexChanged 以传递 ComboBox 所在的行,以及该行中所有 ComboBoxes 的当前 ComboBox 文本。

【问题讨论】:

  • 使用必要 QModelIndex 的 row() 属性
  • 您能否扩展您的问题(或使其更准确/提供一些代码示例)?我无法理解您的问题 :( 如果您想更改选择 - 请阅读 Qt 文档。
  • 我更新了我的问题。我希望这更有意义。

标签: qt qtreewidget qcombobox qtreewidgetitem


【解决方案1】:

我让它工作了。我最终只是创建了我自己的继承 QComboBox 的自定义类,并且我只是添加了一个构造函数,该构造函数传入了一个具有行号的额外参数。然后我创建了一个自定义信号,它传递组合框的当前文本和从构造函数传入的行数据中获取的行。

【讨论】:

  • 如果上面的某些行将被删除,将会怎样?然后你的索引变得无效。您应该传递 QPersistentModelIndex 而不是行号
  • 就我而言,它会起作用。在我的应用程序中,只有在重建整个表时才会删除行,在这种情况下,组合框也会被重建。
猜你喜欢
  • 2013-09-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-29
  • 2012-07-06
  • 1970-01-01
  • 1970-01-01
  • 2019-08-25
相关资源
最近更新 更多