繁体   English   中英

如何从代表发送信号

[英]How to send a signal from delegate

我有一个使用TableView的用户界面。 它有3列。 最后一列有一个comboBox。 所有数据都随委托一起插入。 问题是当组合框索引更改时,我找不到一种将信号发送到用户界面类的公共插槽的方法。 有了委托,我已经知道了当前索引。 有人知道将这个索引发送到ui的方法吗? 我认为唯一可行的解​​决方案不是使用信号和插槽。 是提取这些数据的直接解决方案吗?

编辑

我了解的是我必须执行以下操作:

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实例。 您可以连接到其信号。 你不知道什么 无论如何,您都不应连接到委托:它是视图的实现细节。 您应该与模型交互,而不是与视图交互。 连接到模型dataChanged信号!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM