1

QTableWidgetカスタムがQStyledItemDelegateあり、セル編集に入ると、コンプリータをポップアップしたいのですが、表示されません。

デリゲートのセットアップ:

tableWidget.setItemDelegate(new DelegateLineEdit());

私のカスタムクラス:

class DelegateLineEdit : public QStyledItemDelegate
{
public:
    DelegateLineEdit() {
        signs << "<" << "<=" << ">" << ">=" << "=";
    }
    ~DelegateLineEdit(){ }
    QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const {
        QLineEdit *line_edit = new QLineEdit(parent);
        line_edit->setStyle(parent->style());
        line_edit->setFocusPolicy(Qt::StrongFocus);
        QCompleter *completer = new QCompleter(signs, line_edit);
        completer->setCompletionMode(QCompleter::UnfilteredPopupCompletion);
        line_edit->setCompleter(completer);
        return line_edit;
    }
    void setEditorData(QWidget *editor, const QModelIndex &index) const {
        QStyledItemDelegate::setEditorData(editor, index);
        QLineEdit *line_edit = dynamic_cast<QLineEdit*>(editor);
        if (line_edit){
            line_edit->completer()->complete();
        }
    }

private:
    QStringList signs;

};

ダブルクリックでセル編集に入ると何も起こりませんが、行をコメントすると
line_edit->completer()->complete()、セルを編集できますが、完了は表示されません。誰かがアイデアを持っていますか?

4

2 に答える 2