私は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?
}
}
そして、どのように私は、ユーザーインターフェイスにそのインデックスを受け取ることができます:私はそれは私がこのような何かをしなければならないであることを理解何
EDIT
?
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'のために私のユーザのために。 –