【发布时间】:2019-01-26 01:42:09
【问题描述】:
我没有找到解决这个问题的合适方法,所以我希望有人能给我一个答案:
我使用的是普通的 QTreeWidget,但作为项目,我使用自己的 QTreeWidgetItem 子类(因为我需要在项目中存储一些其他信息)。现在我想使用 QTreeWidget 的 itemClicked() 信号,但我认为我的插槽没有收到任何信号,而且我认为它与 itemClicked() 的签名有关,因为它发送一个 QTreeWidgetItem,当然不是我的自己的子类。
是否有可能 QTreeWidget 没有检测到对我自己的子类项目的点击?
这是我的连接:
connect(treeWidget, SIGNAL(itemClicked(QTreeWidgetItem *)), this, SLOT(displayTransformData(QTreeWidgetItem*)));
这是我的位置:
void GUI::displayTransformData(QTreeWidgetItem* item) {
cout << "test" endl;
Q_actorTreeWidgetItem* actor_item = dynamic_cast<Q_actorTreeWidgetItem*>(item);
vtkSmartPointer<vtkActor> actor =
vtkSmartPointer<vtkActor>::New();
actor = actor_item->getActorReference();
double* position = new double[3];
position = actor->GetOrigin();
x_loc->setText(QString(std::to_string( position[0]).c_str() ));
}
我已经在尝试将可以从信号中获取的项目转换为我自己的子类,但从未调用 slot 函数,因为来自我的 cout 行的测试不会出现在控制台中。
我非常感谢每一个帮助!
【问题讨论】:
-
尝试准备a complete, minimal and verifiable example。您自己找到错误的机会很大,或者至少会帮助其他人为您找到错误。
标签: qt qt-signals qtreewidget qtreewidgetitem