我似乎无法一次过滤多个列.我认为这是使用过滤器的常见用法,也许我错过了一些东西.
例如,我在我的4列QTableView,让我们说列X (string), Y (int), Z (string), Q (string).我希望通过筛选filter_1列X和过滤的filter_2列Z.是否可以QSortFilterProxyModel为多个列(动态)设置过滤器,但不是全部(重新实现filterAcceptsRow).
谢谢
我创建了一个QAbstractTableModel名为PresetTableModel,并将其连接到一个QTableView.我实现了rowCount,columnCount和数据函数.如果我rowCount返回一个固定的数字,一切都有效,但只要我返回一个变量值,列表视图就不会显示任何行.下面代码中的debug语句显示从0开始的大小值,但是一旦填充了列表,就会更改为9.
int PresetTableModel::rowCount(const QModelIndex & /*parent*/) const
{
qDebug() << preset_list.count();
return preset_list.size();
}
Run Code Online (Sandbox Code Playgroud)
我还需要做些什么来强制它更新行数吗?
我目前正在阅读Qt的模型/视图教程,但我仍然不确定是否应该为我的Qt程序使用模型/视图或小部件:
我需要做一个记录器应用程序,它将监视模拟环境中的所有信息.基本情景可能是:
等等
此记录器应用程序的需求是实时获取此信息,并且收集的数据将不可编辑.从本质上讲,这只是为了显示日志.
那么,使用模态/视图或小部件是否值得我想做什么?
谢谢
我有一个QTableView.
有没有办法对齐中心,这个视图的所有单元格内容?
我没有使用任何代表.它只是AbstractTableModel作为模型添加到一个QTableView.
我应该如何将每个细胞内容与中心对齐?
谢谢.
我有一个带有自己的自定义模型的QTableView。它包含一个文本列表,每个文本列的最大大小有很大的不同。
我知道我可以实现自己的项目委托来为列提供大小提示,但是看起来是以像素为单位指定的。我宁愿以与分辨率无关的方式执行此操作。
有没有一种方法可以按比例指定所需的列大小,类似于在布局中水平拉伸因子如何工作?
我有一个QTableView记录很少,一行包含四列.我需要获取这4个索引值(名称,姓氏,年龄,用户名)以便将其删除SQLite,因此我需要将这四个值放入删除查询中.我希望点击的各项指标THAT行,并取回所有4个值.我该怎么做?谢谢
如何更改QTableView中的默认行大小,使其更小?我可以调用resizeRowsToContents(),但后续插入仍然在末尾添加新行,这是默认大小.
我猜它可能与样式表有关,但我不太熟悉影响视觉变化的东西.
我在Python中使用PySide,但我认为这是一个普遍的Qt问题.
示例视图:
默认表格外观

表后面的内容resizeRowsToContents()如下:

现在,如果我在末尾添加一个新的空白行:

Darn,它使用默认行高,以及所有额外空间.
作为动画图像(又名预加载器)或替代品的Qt负载指示器的跟进?我试着在里面画画QTableView.但是当我初始化时,QPainter我收到以下警告.
QWidget::paintEngine: Should no longer be called
QPainter::begin: Paint device returned engine == 0, type: 1
Run Code Online (Sandbox Code Playgroud)
这是代码(SO答案,它似乎有一个按钮):
void CDerivedFromQTableView::paintEvent(QPaintEvent *event)
{
QTableView::paintEvent(event); // draw original content
QPainter p(this); // Problem: QPainter::begin: Paint device returned engine == 0, type: 1
const QPixmap pm(QPixmap::grabWidget(this->m_loadIndicator));
QPoint middle = this->geometry().center();
int x = middle.x() - pm.width() / 2;
int y = middle.y() - pm.height() / 2;
p.drawPixmap(QPoint(x, y), pm); // draw load …Run Code Online (Sandbox Code Playgroud) 我想QHeaderView在其他部分之间显示小部件QTableView,如下面的示例图片(用Photoshop创建),因为这似乎是一种自然的方式来启用输入过滤列.
我正在使用QtableView显示我的日志并按列过滤它们,因此使用了QSortFilterProxyModel。如果我使用某个值对某一列进行过滤,并且对过滤后的数据进行过滤,则如果我尝试对第二列进行过滤,则会重置上一个过滤器,并显示与第二列上的过滤器相对应的数据。我想在Qtableview上实现多列过滤器。
程式码片段:
self.tableView = QTableView()
self.model = QtGui.QStandardItemModel(self)
self.proxy = QtGui.QSortFilterProxyModel(self)
self.proxy.setSourceModel(self.model)
self.tableView.setModel(self.proxy)
def updateTable(self):
self.model.invisibleRootItem().appendRow(,,,,)
def filterTable(self, stringAction, filterColumn):
filterString = QtCore.QRegExp( stringAction,
QtCore.Qt.CaseSensitive,
QtCore.QRegExp.FixedString
)
self.proxy.setFilterRegExp(filterString)
self.proxy.setFilterKeyColumn(filterColumn)
Run Code Online (Sandbox Code Playgroud) qtableview ×10
qt ×9
python ×3
pyqt ×2
filtering ×1
pyqt4 ×1
pyside ×1
python-2.7 ×1
qheaderview ×1
qmodelindex ×1
qpainter ×1
qt5 ×1
qt5.4 ×1
qtablewidget ×1
qtreeview ×1
qtreewidget ×1
sqlite ×1