質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

1回答

1800閲覧

PyQt5のTableViewでセルをクリックした時に、セルではなく行全体を選択したい

fastfood

総合スコア6

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

1クリップ

投稿2021/11/16 17:08

編集2021/11/16 17:14

前提・実現したいこと

TableViewに表示されているデータのセルをクリックすると「セルのみ」選択されます。
イメージ説明
実現したいことは、↓のようにセルをクリックすると、該当の行全体が選択状態にしたいです。
イメージ説明

import sys from PyQt5.QtCore import * from PyQt5.QtWidgets import * class MyTableModel(QAbstractTableModel): def __init__(self, list, headers = [], parent = None): QAbstractTableModel.__init__(self, parent) self.list = list self.headers = headers def rowCount(self, parent): return len(self.list) def columnCount(self, parent): return len(self.list[0]) def flags(self, index): return Qt.ItemIsEditable | Qt.ItemIsEnabled | Qt.ItemIsSelectable def data(self, index, role): if role == Qt.EditRole: row = index.row() column = index.column() return self.list[row][column] if role == Qt.DisplayRole: row = index.row() column = index.column() value = self.list[row][column] return value if role == Qt.DisplayRole: row = index.row() column = index.column() value = self.list[row][column] return value def setData(self, index, value, role = Qt.EditRole): if role == Qt.EditRole: row = index.row() column = index.column() self.list[row][column] = value self.dataChanged.emit(index, index) return True return False def headerData(self, section, orientation, role): if role == Qt.DisplayRole: if orientation == Qt.Horizontal: if section < len(self.headers): return self.headers[section] else: return "not implemented" else: return section class MainWindow(QWidget): def __init__(self, parent=None): super(MainWindow, self).__init__(parent) self.setGeometry(300, 50, 300, 250) self.setWindowTitle('MainWindow') self.tableView = QTableView(self) self.tableView.setObjectName(u"tableView") self.tableView.setGeometry(10, 10, 280, 180) self.pushButton = QPushButton(self) self.pushButton.setObjectName(u"pushButton") self.pushButton.setGeometry(220, 200, 60, 30) self.pushButton.setText(QCoreApplication.translate("pushButton", u"ボタン", None)) # ヘッダーの設定 header = ["データ1" , "データ2" , "データ3" , "データ4"] # 挿入するデータ row = [[10 , 20 , 30 , 40],[100,200,300,400]] self.model = MyTableModel(row, header) self.tableView.setModel(self.model) self.selectRow = self.model.rowCount(QModelIndex()) if __name__ == '__main__': app = QApplication(sys.argv) main_window = MainWindow() main_window.show() sys.exit(app.exec_())

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問