私は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;
}