我有一个 QTableView,它显示来自 QSqlTableModel 的数据。我希望我的模型在用户点击“刷新”按钮时检查更改,但我找不到更新数据的方法。我在模型上尝试了 reset() 和 update() 方法,但没有任何结果。
是否可以从数据库“重新读取”并更新模型?如何?
我在一个QTableView. 现在我想跟踪用户按下鼠标左键一次的图像,我想跟踪它,因为我将在更大的窗口中准确地显示该图像。我怎样才能做到这一点?我的意思是如何获取用户按下鼠标左键一次的图像的行和列索引?
我在 QTableView 中看不到任何直接的clicked()信号,那么给我 QTableView 的行或列的工具是什么?
编辑:我想我还应该提到我曾经QStandardItemModel在QTableView. 首先,我设置模型的行和列,然后在 a 中输入每个QImage类型项(我将其转换QImage为QIcon)QStandardItem,然后将其放入QStandardItem,QStandardItemModel一旦QStandardItemModel设置或填充,我将放入QTableView.
谢谢。
我在表格视图中正确调整行大小时遇到一个小问题。我有一个垂直标题,没有水平标题。我试过:
self.Popup.table.setModel(notesTableModel(datainput))
self.Popup.table.horizontalHeader().setVisible(False)
self.Popup.table.verticalHeader().setFixedWidth(200)
for n in xrange(self.Popup.table.model().columnCount()):
self.Popup.table.setColumnWidth(n,150)
Run Code Online (Sandbox Code Playgroud)
这工作得很好,但是当我尝试时:
for n in xrange(self.Popup.table.model().rowCount()):
self.Popup.table.setRowHeight(n,100)
Run Code Online (Sandbox Code Playgroud)
或者
for n in xrange(self.Popup.table.model().rowCount()):
self.Popup.table.resizeRowToContents(n)
Run Code Online (Sandbox Code Playgroud)
即使文本超过单元格的长度,也不会调整行的大小。
如何强制行适合数据?
如何将QTableView的多个项目/值复制并粘贴到text/excel文件?
我的代码:
tab_table_view = QtGui.QWidget()
self.Tab.insertTab(0, tab_table_view, self.File_Name)
self.tableView = QtGui.QTableView(tab_table_view)
self.tableView.setGeometry(QtCore.QRect(0, 0, 721, 571))
self.model = QtGui.QStandardItemModel(self)
self.tableView.setSelectionMode(QAbstractItemView.ExtendedSelection
Run Code Online (Sandbox Code Playgroud)
这一行self.tableView.setSelectionMode(QAbstractItemView.ExtendedSelection有助于在QTableView中选择多个项目,但是当我执行CTRL+ C粘贴它时,只粘贴选择的最后一项或值?
我已经看过该行,self.tableView.setEditTriggers(QAbstractItemView.AllEditTriggers)但是这个只适用于表中的单个项目而忽略了扩展选择.
请帮助我,这是我第二次发布这个问题.现在,我想知道它是否可能?请让我知道任何人!
我想通过按 QPushButton 来删除 QTableView 小部件中的行。该代码对于单行工作正常,但是,当我选择多行时,总是会遗漏一行。
这是我到目前为止所拥有的:
主界面
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Dialog</class>
<widget class="QDialog" name="Dialog">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>350</width>
<height>239</height>
</rect>
</property>
<property name="windowTitle">
<string>Dialog</string>
</property>
<widget class="QWidget" name="formLayoutWidget">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>341</width>
<height>231</height>
</rect>
</property>
<layout class="QFormLayout" name="formLayout">
<item row="0" column="1">
<widget class="QPushButton" name="btnPopulate">
<property name="text">
<string>Populate Table</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QTableView" name="tableView">
<property name="selectionBehavior">
<enum>QAbstractItemView::SelectRows</enum>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QPushButton" name="btnDelete">
<property name="text">
<string>Delete Row(s)</string>
</property> …Run Code Online (Sandbox Code Playgroud) 选择行为设置为选择行,但仅突出显示悬停的单元格。有没有办法突出显示整行?
下面的代码创建QTableView由self.myModel( QAbstractTableModel) 驱动。“显示全部”self.checkBox链接到self.myModel.cbChanged()方法。

问题:如何修改此代码,以便在选中复选框后立即刷新“QTableView”?
目标:当选中该复选框时,我们希望显示奇数编号的项目。以及要隐藏的偶数项。当复选框关闭(未选中)时,我们希望显示偶数编号的项目。所有奇数编号的项目都被隐藏。
import sys, os
from PyQt4 import QtCore, QtGui
app=QtGui.QApplication(sys.argv)
class TableModel(QtCore.QAbstractTableModel):
def __init__(self):
QtCore.QAbstractTableModel.__init__(self)
self.items=['One','Two','Three','Four','Five','Six','Seven']
self.cb_status=True
def rowCount(self, parent=QtCore.QModelIndex()):
return len(self.items)
def columnCount(self, index=QtCore.QModelIndex()):
return 1
def data(self, index, role):
if not index.isValid() or not (0<=index.row()<len(self.items)):
return QtCore.QVariant()
item=str(self.items[index.row()])
if role==QtCore.Qt.DisplayRole and self.cb_status:
return item
else:
return QtCore.QVariant()
def cbChanged(self, arg=None):
self.cb_status=arg
class Window(QtGui.QWidget):
def __init__(self):
super(Window, self).__init__()
mainLayout=QtGui.QHBoxLayout()
self.setLayout(mainLayout)
self.viewA=QtGui.QTableView()
self.viewA.horizontalHeader().setResizeMode(QtGui.QHeaderView.Stretch)
self.myModel=TableModel()
self.viewA.setModel(self.myModel)
self.checkBox=QtGui.QCheckBox("Show All") …Run Code Online (Sandbox Code Playgroud) 我有一个QTableView如下图所示:
我想从表格中删除所有垂直线。我试图将gridline-color属性设置为等效于background-color,但它删除了所有网格线。
我希望保持水平网格线,并删除垂直网格线。我怎样才能做到这一点?
我在 Maya / PySide2 / Python 2.7
我无法使用自定义表模型设置标题数据。
我试过这个:
from PySide2 import QtCore, QtGui, QtWidgets
from PySide2.QtCore import Qt
class TableModel(QtCore.QAbstractTableModel):
def __init__(self, data):
super(TableModel, self).__init__()
self.setHeaderData(0, Qt.Horizontal, "Driver")
self.setHeaderData(1, Qt.Horizontal, "Range")
self.setHeaderData(2, Qt.Horizontal, "Driven")
self.setHeaderData(3, Qt.Horizontal, "Range")
self._data = data
def data(self, index, role):
if role == Qt.DisplayRole:
return self._data[index.row()][index.column()]
def rowCount(self, index):
return len(self._data)
def columnCount(self, index):
return 4
def addRow(self, row):
self._data.append(row)
self.layoutChanged.emit()
class MainWindow(QtWidgets.QMainWindow):
def __init__(self):
super(MainWindow, self).__init__()
self.table = QtWidgets.QTableView()
data = [
[
"firstData", …Run Code Online (Sandbox Code Playgroud)