gpt4 book ai didi

c++ - 将 QTreeWidget(或任何其他 QWidget)传递给 Qt 中的插槽

转载 作者:行者123 更新时间:2023-11-30 05:36:30 25 4
gpt4 key购买 nike

我可以将任何 QWidget 传递给 Qt Slot,在我的例子中是 QTreeWidget 的子类吗?我需要在父类的成员函数中从 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...

我需要声明一个信号吗?如何以及在哪里(如果是)?

最佳答案

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

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

然后在

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

关于c++ - 将 QTreeWidget(或任何其他 QWidget)传递给 Qt 中的插槽,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33542477/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com