gpt4 book ai didi

c++ - 如何从委托(delegate)发送信号

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

我有一个使用 TableView 的用户界面。它有 3 列。最后一列有一个组合框。所有数据都与委托(delegate)一起插入。问题是当组合框索引更改时,我找不到向用户界面类的公共(public)插槽发送信号的方法。 通过委托(delegate),我已经知道当前索引。有人知道将此索引发送到用户界面的方法吗?我认为唯一可能的解决方案不是信号和槽。是否有直接的解决方案来提取这些数据?

编辑

我的理解是我必须做这样的事情:

void Delegate :: setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const
{
if(index.column() == COL_Coordonate) // test if we are at the last column
{
QComboBox *comboBox = static_cast<QComboBox*>(editor);
model -> setData(index, comboBox -> currentIndex(), Qt::EditRole);
emit dataChanged(comboBox -> currentIndex(),comboBox -> currentIndex()); // something like this you have in mind?
}

}

我如何在用户界面中接收该索引?我在那里创建我的模型是这样的:

QStandardItemModel *model;
Delegate *mydelegate;

并像这样使用它们:

mydelegate = new Delegate(this);
model = new QStandardItemModel(0, 3, this); // I add rows dynamically
ui -> tableView -> setModel(model);
ui -> tableView -> setItemDelegate (mydelegate);

当我按下按钮时,我使用代理添加数据。我需要从这个界面触发插槽吗?如果是这样,有人可以提供有关我如何执行此操作的代码示例吗?

最佳答案

你有一个 QComboBox 实例。您可以连接到它的信号。你不知道什么?在任何情况下,您都不应该连接到委托(delegate):它是 View 的实现细节。您应该与模型交互,而不是与 View 交互。连接到模型dataChanged信号!

关于c++ - 如何从委托(delegate)发送信号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38698942/

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