2

デフォルトでは、QTable 内の項目を編集すると、セル内のすべてのテキストが選択されます。それは避けたい。ただし、これがどこで発生するかを見つけることができないようです。

を継承する単純なカスタム デリゲートを作成し、単純に を継承QStyledItemDelegateするカスタム オブジェクトを返しますQLineEditQLineEdit::focusInEvent()これらのクラスでは、 を無効にする、 my の選択を指定するなど、「トリック」を実行できると思われるものの組み合わせをいくつか試しましQLineEditたが、何も機能しません。

最も近いのは、セルをクリックすると、選択したテキストを設定することです。しかし、セルがクリックされた瞬間からカスタム選択が実行される瞬間までの間に、とにかくテキスト全体が選択されるので、避けたいと思います。

何か案が?ありがとう、

4

1 に答える 1

2

次のようなカスタムQLineEditのコーディング:

class MyLineEdit : public QLineEdit {
public:
  MyLineEdit(QWidget*parent=0) : QLineEdit(parent)
  {}

  void showEvent(QShowEvent*)
  {
    deselect();
    setSelection(1,2); // should be configurable
  }
};

それをエディターウィジェットとして設定すると、テーブルセルをダブルクリックして、ちらつきのない、事前に選択されたテキストを含む行編集を取得できます。とにかく、ダブルクリックの途中でセル全体が選択されます。これが許容できるかどうかはわかりません。

于 2012-04-05T16:50:22.077 に答える