私はQTableView
のカスタムデリゲートを使用しています。デフォルトのQLineEdit
エディタウィジェットの代わりに、QLineEdit
の隣にコンボボックスを入れたいと思います。カスタムエディタが正しく表示され、テキストボックスに入力してタブを押してテーブルの次の行に移動すると、次の行がスキップされ、その下の2行のセルの編集が開始されます。タブを使用する代わりに、Enterキーを使用すると、期待どおりに次の行に移動します。誰かがタブキーの動作で何が起きているのかここで説明できますか?QTableViewのタブを使用すると、一度に2行移動する
私のテーブルには2つのカラムがあり、2番目のカラムだけが編集可能です。そのため、エディタを下の行に移動する必要があります。
私はこのようなQStyledItemDelegate
から継承して私のカスタムデリゲートを作っ:
class ParameterDelegate: public QStyledItemDelegate {
public:
QWidget* createEditor(QWidget* parent, const QStyledItemDelegate& option, const QModelIndex& index) {
QWidget* widget = new QWidget(parent);
widget->setLayout(new QHBoxLayout());
widget->layout()->addWidget(new QLineEdit());
widget->layout()->addWidget(new QComboBox());
widget->layout()->setContentsMargins(0, 0, 0, 0);
widget->layout()->setSpacing(0);
return widget;
}
};