我有一個使用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);
我與委託添加數據時,我按下一個按鈕。我需要從這個界面觸發一個插槽嗎?如果有人可以請提供一個關於我如何做這件事的代碼示例?
委託人決不能發出任何模型的信號。這是**模型的工作:它已經發出這些信號。你需要連接你的代碼(一個槽或一個函數)到模型:'connect(model,&QAbstractItemModel :: dataChanged,this,[=](const QModelIndex&index){/ *你的代碼在這裏* /});'' –
如果你想要例子,例如搜索在我的用戶上使用'QAbstractItemModel'或'QStandardItemModel'或'QListView'或'QTableView'。 –