c++ - 如何在扩展 QTreeWidgetItem 而不是 QTreeWidget 上调用 SLOT?

标签 c++ qt

我在 TaskGenJob.h 中有我的类,其中 TaskGenModel 继承自 QObject:-

TaskGenJob.h

class TaskGenJob : public TaskGenModel    
{
    Q_OBJECT    
public:    
    TaskGenJob();    
    ~TaskGenJob();
}

TaskGenJob::TaskGenJob()
{    
//Connect signal itemExpanded to updateValue so that Display is updated only on tree expansion

connect(TaskGenJobDisplayPtr->getTaskGenJobTreeWdiget(), SIGNAL(itemExpanded(QTreeWidgetItem*)), this, SLOT(updateValue()));    
}

在我的 TaskGenJob.cpp 文件中,我尝试像上面那样将 QTreeWidgetItem 的信号连接到 updateValue。

但我收到以下错误:-

/opt/qt_4.8.6/include/linux60_64/gcc48/QtCore/qobject.h:204:17: note:   no known conversion for argument 1 from 'QTreeWidgetItem*' to 'const QObject*'
/opt/qt_4.8.6/include/linux60_64/gcc48/QtCore/qobject.h:217:17: note: static bool QObject::connect(const QObject*, const QMetaMethod&, const QObject*, const QMetaMethod&, Qt::ConnectionType)
     static bool connect(const QObject *sender, const QMetaMethod &signal,
                 ^
/opt/qt_4.8.6/include/linux60_64/gcc48/QtCore/qobject.h:217:17: note:   no known conversion for argument 1 from 'QTreeWidgetItem*' to 'const QObject*'
/opt/qt_4.8.6/include/linux60_64/gcc48/QtCore/qobject.h:337:13: note: bool QObject::connect(const QObject*, const char*, const char*, Qt::ConnectionType) const
 inline bool QObject::connect(const QObject *asender, const char *asignal,

错误是因为 QTreeWidgetItem 没有继承自 QObject 并且没有 SIGNAL(itemExpanded(QTreeWidgetItem*))。 在我的应用程序的 GUI 中,我有 1 个 QTreeWideget 和数千个 QTreeWidgetItem 子项。我可以访问这些 child 的指针。要求是我必须仅在扩展 QTreeWidgetItem 子项时调用 SLOT updateValue。 我怎样才能做到这一点?

最佳答案

如错误所述,QTreeWidgetItem 不是 Q 对象的子类,也没有任何信号。 QTreeWidget 具有这些,因此请尝试连接它,就像您在代码片段中所做的那样。

QTreeWidget::itemExpanded 信号在它的任何项被展开时发出,并且哪个被展开在它的参数中。

关于c++ - 如何在扩展 QTreeWidgetItem 而不是 QTreeWidget 上调用 SLOT?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46824310/

相关文章:

c++ - 显示包含多个类的链表?

qt - 如何在 Qt 5.2.1+ 中更新组件?

c++ - QTreeView 中某些索引的自定义文本颜色

c++ - 在 Qt 中,我怎么知道我在 foreach 中的最后一个对象

c++ - 任何好的 C++0x 概述?

c++ - 在谈论重叠 I/O 时,上下文信息意味着什么?

c++ - 类里面的 setter和getter

qt - 如何在不声明 32 个插槽的情况下将 32 个按钮的 press() 信号连接到单个函数?

linux - 如何将 glibc 静态链接到 qt

c++ - 求一个GMP二分查找: How to compare two GMP mpz_t's using memcmp?