2016-10-15 60 views
1

環境:qt QTableWidgetプログラムのセル選択 - カーソルを使用して準備する方法?

  • のQt 4.7.1
  • のQt Creatorを2.1.0
  • C++

問題:

私はQTableWidgetを持っています。私は行を追加し、最初のセルを選択します。

私が欲しいのは、プログラムがそれを選択した直後にセルに入力できることです。そのため、マウスに手を届かせる必要はありません。

選択の動作は、セルを強調表示し、カーソルをその中に入れないことです。私は入力する前に、マウスでセルをクリックしなければなりません。

これまでの選択動作では、行、列、またはセル選択オプションと関連があります。どの細胞の選択が実際にはであるかについては何もなし

これまでのところ私のコードは、説明したように動作します。 rcはすでに決定し、最後の行のインデックスです:

ui->thetable->scrollToBottom(); 
QModelIndex index = ui->thetable->model()->index(rc, 0); 
ui->thetable->selectionModel()->select(index,QItemSelectionModel::Select); 
+0

['setEditTriggers'](https://doc.qt.io/qt-5/qabstractitemview.html#editTriggers-prop)を使用して、現在のアイテムが変更されたときにいつでも編集をトリガーしてみてください。何かこれのような、 'ui-> thetable-> setEditTriggers(QAbstractItemView :: CurrentChanged);' – Mike

+0

@Mikeしかし、これは常に編集モードのセルを持つことで解決します。ユーザーが項目を選択しただけでも、編集モードになります。私は、プログラムで選択された場合にのみ起こることを望んでいたと思います。 –

+0

@ luca-angioloniそうです。今度は、プログラムされた選択の後に動作するようにタブオーダーを得ることができれば、TABキーは前の行の最後まで1つ戻る。だから私は最初のデータを入力して、Tabキーを押し、_then_私は間違ったセルに入っています。これは、プログラムを介したオープン編集の代わりにマウスを使用すると正しく(常にTABSを右/前に)機能します。 – fyngyrz

答えて

3

あなたはこのよう編集方法を使用することができます。

すでに計算されたインデックスを使用して
ui->thetable->edit(index); 

、またはあなたがのカスタム信号を接続することができQTableWidgetのアイテムによって継承されたvoid QAbstractItemView::edit (const QModelIndex & index)スロットへのあなたのもの。

+0

最初は完璧です。また、偉大な答え:簡潔でポイントに。 – fyngyrz

+0

@fyngyrzありがとう –

関連する問題