如何从代表发送信号

问题描述:

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

编辑

我知道它是什么,我必须做这样的事情:

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); 

我与委托添加数据时,我按下一个按钮。我需要从这个界面触发一个插槽吗?如果有人可以请提供一个关于我如何做这件事的代码示例?

+0

委托人决不能发出任何模型的信号。这是**模型的工作:它已经发出这些信号。你需要连接你的代码(一个槽或一个函数)到模型:'connect(model,&QAbstractItemModel :: dataChanged,this,[=](const QModelIndex&index){/ *你的代码在这里* /});'' –

+0

如果你想要例子,例如搜索在我的用户上使用'QAbstractItemModel'或'QStandardItemModel'或'QListView'或'QTableView'。 –

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

+0

我是Qt新手,在模型视图上我几乎没有任何经验。你提供一个例子吗?我将在编辑中编辑一个鳕鱼样本。 – student