簡體   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