[英]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.