首页 文章

将QTreeWidget(或任何其他QWidget)传递给Qt中的Slot

提问于
浏览
1

我可以将QTreeWidget的子类传递给任何QWidget到Qt插槽吗?我需要在父级的成员函数中从QTreeWidget获取文本 . 只是传入一个QString作为额外的参数与 connect(signalMapper, SIGNAL(mapped(QString)), parent, SLOT(changePicture(QString))); 工作正常,但现在我想传入一个子类QTreeWidget ifxTreeWidget *tree = new ifxTreeWidget();changePicture . 我将changePicture的签名更改为 ifxTreeWidget 作为参数,映射如下:

QSignalMapper * signalMapper = new QSignalMapper(parent);

signalMapper->setMapping(tree, tree)

并尝试连接它像:

connect(signalMapper, SIGNAL(mapped(QWidget)), parent, SLOT(changePicture(ifxTreeWidget)));

connect( tree, SIGNAL(clicked(QModelIndex)), signalMapper, SLOT(map()) );

但这让我失望:

QObject::connect: No such signal QSignalMapper::mapped(QWidget) in...

我需要申报一个信号吗?如何以及在何处(如果是)?

1 回答

  • 1

    你的连接语句是错误的 . 试试这个

    connect(signalMapper, SIGNAL(mapped(QWidget*)), parent, SLOT(changePicture(QWidget*)));
    

    然后在 parent

    void ParentClass::changePicture(QWidget* widget)
    {
      ifxTreeWidget* tree = qobject_cast<ifxTreeWidget*>(widget);
      if (tree) {
        // do something with the tree now
      }
    }
    

相关问题