如何将 itemExpanded 与 QTreeWidgetItem 的子类一起使用
How to used itemExpanded with a subclass of QTreeWidgetItem
我确实有一个与 SIGNAL/SLOT 在 Qt/C++
中使用相关的联系
我使用 QTreeWidget + QTreeWidgetItems 编写了一个应用程序。为了应用程序的需要,我不得不将class QTreeWidgetItem 子class 到MyQTreeWidgetItem 以添加一些参数。
自从我从 QTreeWidgetItem class 移动到 MyQTreeWidgetItem class,
connect(this, SIGNAL(itemExpanded(MyQTreeWidgetItem*)),
this, SLOT(onSubTreeDisplay(MyQTreeWidgetItem*)));
不再工作了。
问题是
QObject::connect: No such signal PulsTreeWidget::itemExpanded(MyQTreeWidgetItem*) in ../puls_connect/pulstreewidget.cpp:33
我认为问题出在 itemExpanded 需要 QTreeWidgetItem 而不是 MyQTreeWidgetItem。但是如果我用 QTreeWidgetItem 替换 MyQTreeWidgetItem 例如
connect(this, SIGNAL(itemExpanded(QTreeWidgetItem*)),
this, SLOT(onSubTreeDisplay(MyQTreeWidgetItem*)));
运行抱怨SIGNAL/SLOT没有和这个正常的类型。
我的项目是通过 MyQTreeWidgetItem 而不是 QTreeWidgetItem 定义的,因为我有 subclass 它。
连接在QTreeWidget部分完成
有什么想法吗?
谢谢
您可以像下面这样连接信号槽
connect(this, SIGNAL(itemExpanded(QTreeWidgetItem*)), this, SLOT(onSubTreeDisplay(QTreeWidgetItem*)));
然后在 onSubTreeDisplay()
中,将 QTreeWidgetItem
参数动态转换为 MyQTreeWidgetItem
,如下所示
void onSubTreeDisplay(QTreeWidgetItem* item)
{
MyTreeWidgetItem* myItem = dynamic_cast<MyTreeWidgetItem*>(item);
if (myItem)
{
//cast is successful. you can use myItem
}
}
我确实有一个与 SIGNAL/SLOT 在 Qt/C++
中使用相关的联系我使用 QTreeWidget + QTreeWidgetItems 编写了一个应用程序。为了应用程序的需要,我不得不将class QTreeWidgetItem 子class 到MyQTreeWidgetItem 以添加一些参数。
自从我从 QTreeWidgetItem class 移动到 MyQTreeWidgetItem class,
connect(this, SIGNAL(itemExpanded(MyQTreeWidgetItem*)),
this, SLOT(onSubTreeDisplay(MyQTreeWidgetItem*)));
不再工作了。
问题是
QObject::connect: No such signal PulsTreeWidget::itemExpanded(MyQTreeWidgetItem*) in ../puls_connect/pulstreewidget.cpp:33
我认为问题出在 itemExpanded 需要 QTreeWidgetItem 而不是 MyQTreeWidgetItem。但是如果我用 QTreeWidgetItem 替换 MyQTreeWidgetItem 例如
connect(this, SIGNAL(itemExpanded(QTreeWidgetItem*)),
this, SLOT(onSubTreeDisplay(MyQTreeWidgetItem*)));
运行抱怨SIGNAL/SLOT没有和这个正常的类型。
我的项目是通过 MyQTreeWidgetItem 而不是 QTreeWidgetItem 定义的,因为我有 subclass 它。
连接在QTreeWidget部分完成 有什么想法吗?
谢谢
您可以像下面这样连接信号槽
connect(this, SIGNAL(itemExpanded(QTreeWidgetItem*)), this, SLOT(onSubTreeDisplay(QTreeWidgetItem*)));
然后在 onSubTreeDisplay()
中,将 QTreeWidgetItem
参数动态转换为 MyQTreeWidgetItem
,如下所示
void onSubTreeDisplay(QTreeWidgetItem* item)
{
MyTreeWidgetItem* myItem = dynamic_cast<MyTreeWidgetItem*>(item);
if (myItem)
{
//cast is successful. you can use myItem
}
}