2016-08-18 9 views
0

comboBoxを使用している列を持つtableViewがあります。デリゲートクラスを使用してモデルクラスのデータを使用してcomboBoxを入力する必要があります。私はこの作業のために信号とスロットを使用していましたが、dataを使用する方法があります。モデルからデリゲートにデータを送信

これは私がcomboBoxを作成して記入する方法です。私はモデルクラスから直接デリゲートにそれを格納せずにファイル行を取得する必要があります。

QWidget *CDelegate :: createEditor(QWidget *parent, const QStyleOptionViewItem &/* option */, const QModelIndex & index) const 
{ 

if(index.column() == COL_ComboBox) 
    { 
     QComboBox *editor = new QComboBox(parent); 

     for(int i=0; i<file.at(index.row()).size(); i++) 
      editor -> addItem(file.at(index.row()).at(i)) 

     return editor; 
    } 
... 
} 
+0

「ファイル」とは何ですか?そしてそれはどのように満たされたのですか? –

+0

ファイルは文字列のベクトルのベクトルです。列内のすべてのcomboBoxと、それらに格納されている日付を格納します。私は、デリゲートとモデルのシステムがそれにどのように適用できるかを理解するまで、これを一時的な解決策として作りました。 – student

+0

私は、comboBoxのすべてのデータを一度に送信するソリューションが必要です。このデータの保存方法は関係ありません。 – student

答えて

1

私が理解したように、あなたのQTableViewのモデルからのデータでQComboBoxを埋めたいです。ご覧のとおり、createEditorconst QModelIndex & indexパラメータは、このモデルへのアクセスを提供します。メソッドmodelQModelIndexのクラスを探します。その理由は、あなたのcreateEditor機能は次のようなものです:

QWidget *CDelegate :: createEditor(QWidget *parent, const QStyleOptionViewItem &/* option */, const QModelIndex & index) const 
{ 

if(index.column() == COL_ComboBox) 
    { 
     QComboBox *editor = new QComboBox(parent); 

     const QAbstractItemModel *model = index.model(); 

     while(/*condition*/) 
     { 
      // take data from model 
      // QVariant dt = model->data(...); 

      // fill editor with data from dt 
      // editor->addItem(...) 
     } 

     return editor; 
    } 
... 
} 
関連する問題