web-dev-qa-db-ja.com

Qt-QTableView-テーブル行のクリック可能なボタン

QTableViewのテーブル行内にボタン/リンクが必要です。これは、ダイアログを開いて、その行をより効率的に編集できるようにするためです。

何時間もウェブを調べた後、私はまだまともな例を見つけていません。

これはQItemDelegateを使用して行われる可能性が高いことは承知していますが、最初にアイテムを編集モードに強制せずに行内に機能ウィジェットを配置する方法がわかりません。

どんな助けでも大歓迎です。

22
cweston

クリック可能なテキストに下線を引き、cellClicked(row、col)シグナルを介してセルのクリックをキャプチャし、col == editColumnであることを確認することで、リンクの機能をエミュレートできます。その場合、行は編集しているアイテムに対応します。

例えば、

データ名|値1 |値2 | 編集

connect (tableWidget, SIGNAL(cellClicked(int,int)), this, SLOT(editSlot(int, int)));

...

void ClassName::editSlot(int row, int col){
  if (col == 3) {
    doWork(row);
  }
}
1
GatorGuy

そのためにsetIndexWidgetを使用できます。詳細については、 Qtドキュメント を参照してください。

例として、2番目の行の最初の列にプッシュボタンを埋め込むには(テストされていないコード):

tableView->setIndexWidget(tableView->model()->index(2, 1), new QPushButton);
25