1

私はQtが初めてです。2 番目の列としてデリゲート コンボ ボックスを含むテーブルがあります。コンボボックスのクリックを検出したかった。

私は1つのアプローチを考えました:コンボボックスをプライベート変数としてComboBoxDelegate追加し、パブリックスロットを次のように追加します

void on_cb_currentIndexChanged ( const QString & text );

ただし、createEditor は const であるため、このメソッドで変数 cb を再割り当てすることはできません。これを行う別の方法はありますか?

class ComboBoxDelegate : public QItemDelegate
{
     Q_OBJECT

 public:
     ComboBoxDelegate(std::vector<std::string> values, QObject *parent = 0);
     ~ComboBoxDelegate();
     QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &option,
                           const QModelIndex &index) const;

     void setEditorData(QWidget *editor, const QModelIndex &index) const;
     void setModelData(QWidget *editor, QAbstractItemModel *model,
                       const QModelIndex &index) const;

     void updateEditorGeometry(QWidget *editor,
         const QStyleOptionViewItem &option, const QModelIndex &index) const;

   private:
    std::vector<std::string> values;
  }
4

1 に答える 1