我想将存储在 sqlite 表中的数据插入到QTableWidget. 我使用两个for循环来查找数据和索引。每次迭代后,我在控制台中打印数据,它没问题,但是当它显示表格小部件时,只有第一行和最后一行填充了数据。有什么想法可以解决这个问题吗?
很明显,这tblTable是一个QTableWidget!
这是代码的这一部分:
cursor.execute('''SELECT * FROM MyTable''')
for index , form in enumerate(cursor.fetchall()):
i = 0
for item in form:
print(str(item))
self.tblTable.setItem(index, i, QtGui.QTableWidgetItem(str(item)))
i = i + 1
self.tblTable.insertRow(1)
Run Code Online (Sandbox Code Playgroud) 有谁知道返回值之间的关系
QTableWidget::item(x, y)
Run Code Online (Sandbox Code Playgroud)
和
QTableWidget::cellWidget (x, y)
Run Code Online (Sandbox Code Playgroud)
在同一个 QTableWidget 和同一个 row.column 中。?
我目前正在阅读Qt的模型/视图教程,但我仍然不确定是否应该为我的Qt程序使用模型/视图或小部件:
我需要做一个记录器应用程序,它将监视模拟环境中的所有信息.基本情景可能是:
等等
此记录器应用程序的需求是实时获取此信息,并且收集的数据将不可编辑.从本质上讲,这只是为了显示日志.
那么,使用模态/视图或小部件是否值得我想做什么?
谢谢
我有一个 QTableWidget,我通过标题列使用它的默认排序功能,但 QTableWidget 中的一列是整数类型,并且通过 QTableWidget 默认排序,它像字符串一样排序。所以有任何方法可以使用我自己的方法QTableWidget 的排序功能?
在 PyQt 中,如何强制 aQTableWidget仅接受单个部分(以便您无法使用Shift或选择更多项目crtl)?
我正在尝试对包含进度条的列进行排序。我希望列按进度条值排序。任何帮助都感激不尽

from PyQt4.QtCore import *
from PyQt4.QtGui import *
import sys
class Example(QMainWindow):
def __init__(self):
super(Example, self).__init__()
self.initUI()
def initUI(self):
self.tablew = Table(self)
self.setCentralWidget(self.tablew)
self.setGeometry(300, 300, 300, 200)
self.show()
class ProgressBar(QProgressBar):
def __init__(self, value, parent=None):
QProgressBar.__init__(self)
self.setMinimum(1)
self.setMaximum(5.0)
self.setValue(value)
self.setFormat('{0:.5f}'.format(value))
style = ''' QProgressBar{max-height: 15px;text-align: center;}'''
self.setStyleSheet(style)
class Table(QTableWidget):
def __init__(self, parent=None):
QTableWidget.__init__(self)
self.setColumnCount(2)
self.setHorizontalHeaderLabels(['id', 'status'])
header = self.horizontalHeader()
header.setResizeMode(QHeaderView.Stretch)
self.setSortingEnabled(True)
self.loadData()
#
def loadData(self):
#
tableData = [[89, 4.8], [99, 3.9], [101, 2.6], [105, 4]]
#
self.setRowCount(len(tableData))
#
for …Run Code Online (Sandbox Code Playgroud) 我有一个QTableWidget3 列。其中 2 列中有一些文本,但其中一列是空的,我希望它具有背景颜色。另外我希望单元格有边框。
如果我做
int i = 0;
foreach (tableData el, data) {
//setting the first cell
ui->eventTable->setItem(i, 1, new QTableWidgetItem);
//ui->eventTable->item(i, 1)->setBackground(el.severityColor);
//ui->eventTable->item(i, 1)->setBackgroundColor(el.severityColor);
ui->eventTable->item(i, 1)->setData(
Qt::BackgroundRole,
QBrush(el.severityColor)
);
//setting the third cell
++i;
}
Run Code Online (Sandbox Code Playgroud)
一切都按预期工作。
但是如果在这段代码之前我尝试添加一个边框
QString style(
"QTableWidget::item {"
"border: 1px solid white;"
"}"
);
ui->eventTable->setStyleSheet(style);
Run Code Online (Sandbox Code Playgroud)
背景没有设置。
我尝试使用setBackground(), setBackgroundColor()(即使它已被弃用)并且setData()如代码所示,但结果是相同的。
我也尝试setShowGrid(true)插入上面的样式表,但没有显示边框。
您可以通过创建一个 1 行 1 列的表格并尝试设置单元格的背景,然后为边框添加样式表来重现这一点。
我错过了什么吗?我还应该尝试什么? 作为替代方案,我可以定位样式中的特定行/单元格,以便我可以构建一个满足我想要的样式表字符串吗?
编辑:
我可以使用其他样式QTableWidget::item并应用它们,问题是当我有边框时。我还尝试将边框样式写为:
border-width: 1px;
border-style: solid;
border-color: white; …Run Code Online (Sandbox Code Playgroud) 我有一张桌子,可以用左、右、上、下按钮在里面移动。现在我需要在某个单元格中创建一个 SIGNAL 并按下空格键。这个信号也应该带来那个单元格的坐标。我尝试使用 QTableWidget 的标准信号,但它不起作用。我该如何解决这个问题?
当我单击右侧的“Çiz”按钮时,我想使用 python 代码对特定列中的值进行排序。但是,如果数字是双倍或更多,它会根据第一个元素进行排序。我意识到它接受字符串形式的值。我在网站上看了很多问题,没有答案。不想写脚本,排序肯定有办法,因为看起来好简单。
这是我从 Qt 5.10 开始的脚本,这里。
这是我的脚本 - 我写了 0 用于根据第一列进行排序:
QTableWidget.sortItems(0, QtCore.Qt.AscendingOrder)
Run Code Online (Sandbox Code Playgroud)
但它接受值作为字符串而不是数字值。实际上,当用户单击标题时有一个脚本对值进行排序,但我不想让用户单击标题:
QTableWidget.setSortingEnabled(True)
Run Code Online (Sandbox Code Playgroud) 我需要一个QTableWidget基于 aQTabelModel并QTableView在表格上方添加一些按钮。见下图:
QTableWidget应调整的宽度,使其不小于合理的最小值,并且不会超出其上方的按钮;特别是,第 1、2、4 列的大小应根据其内容进行调整,第 3 列Aberrations应扩大以填补右侧的空白。我想知道如何在代码中做到这一点。
以下是我用于自定义QTableWidget(PyQt5、Python3)的代码的最小示例:
from PyQt5 import QtGui, QtCore, QtWidgets
import numpy as np
#-- Table Model
class MyTableModel(QtCore.QAbstractTableModel):
def __init__(self, data, parent=None, *args):
super(MyTableModel, self).__init__(parent)
# table data
self.table_data = data
self.rows_nr, self.columns_nr = data.shape
# vertical & horizontal header labels
self.hheaders = ["Head-{}".format(i) for i in range(self.columns_nr)]
self.vheaders = ["Row-{}".format(i) for i in range(self.rows_nr)]
# nr of rows
def rowCount(self, parent):
return self.rows_nr …Run Code Online (Sandbox Code Playgroud) qtablewidget ×10
pyqt ×5
qt ×5
python ×3
keypress ×1
pyqt4 ×1
pyqt5 ×1
pyside ×1
python-2.7 ×1
qt4 ×1
qt5 ×1
qtableview ×1
qtgui ×1
qtreeview ×1
qtreewidget ×1
resize ×1
sorting ×1
sqlite ×1
widget ×1