2012-04-05 4 views
2

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

QStyledItemDelegateから継承するシンプルなカスタムデリゲートを作成し、QLineEditから単純に継承するカスタムオブジェクトを返します。これらのクラスでは、QLineEdit::focusInEvent()を無効にしたり、QLineEditの選択を指定するなどの "トリック"を行うことができると考えたもののいくつかの組み合わせを試しましたが、何も動作しません。

私が得意なのは、セルをクリックすると、私が望む選択されたテキストを設定することです。しかし、セルがクリックされた瞬間と、私のカスタム選択が実行された瞬間との間に、テキスト全体が選択されているので、避けたいものです。

おかげで、このようなカスタムにQLineEditコーディング

答えて

2

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

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

とエディタウィジェットとして設定し、私はテーブルのセルをダブルクリックして、任意のちらつきなしに、いくつかの事前に選択されたテキストとラインエディットを得ることができます。とにかく、ダブルクリックの途中でセル全体が選択されますが、これが受け入れられるかどうかはわかりません。

+0

これはトリックでした。ありがとう! – piwi

関連する問題