Qt QTableView在活动单元格周围绘制边框
我正在尝试在QTableView中实现类似行为的Excel,在整个当前选择中绘制边框.我尝试了这是一百种不同的方式,并继续遇到问题.我可以很容易地绘制边界,但是只要选择变化,就会留下边界的残余物.这是我在qtableview :: paintevent ... 中尝试的一个示例 void MyTableView::paintEvent(QPaintEvent* event) { // call QTableView's paint event first so we can draw over it QTableView::paintEvent(event); // activeSelection is a list of indexes that is updated in another function // the function also calls QTableView::repaint whenever this list chan
2 2024-04-02
编程技术问答社区
PyQt-重新实现QSqlTableModel的数据方法时遇到的问题
我是python的新手,主要与pyqt一起.问题很简单:我有一个QTableView,我想"简单地"更改一些行的颜色.我发现最简单的解决方案应该是以这种方式覆盖模型中的数据方法: class MyModel(QtSql.QSqlTableModel): def data(self,idx,role): testindex=self.index(idx.row(),idx.column(),idx.parent()) if(role==QtCore.Qt.BackgroundRole): return QtGui.QColor(255,0,0) elif role == QtCore.Qt.DisplayRole: return QtSql.QSqlTableModel().data(testindex) 当我使用此模型重新实现时,行会改变颜色,但单元格值消失了,返回语句Qt
4 2024-03-27
编程技术问答社区
QTableView:如何在鼠标移过时将整个行悬停?
i分类为qtableView,qabstracttablemodel和qitemdelegate.我能够将鼠标上的单个单元格悬停在鼠标上: void SchedulerDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const { ... if(option.showDecorationSelected &&(option.state & QStyle::State_Selected)) { QColor color(255,255,130,100); QColor colorEnd(255,255,50,150); QLinearGradient gradient(option.rect.topLeft(),option.rect.bottomRight()); gradient.set
18 2023-12-06
编程技术问答社区
QTableView 如何在鼠标悬停时突出整个行?
选择行为设置为选择行,但仅突出显示了盘旋的单元格.有什么方法可以突出整个行? 解决方案 有两种方法.. 1)您可以使用委托来绘制行背景... 您将需要设置该行以突出显示在代表中,并基于此, 进行突出显示. 2)捕获当前行的信号.迭代该行中的项目 和 设置每个项目的背景. 希望,这对你们有用. 其他解决方案 首先,您子类和重新进来mouseMoveEvent和leaveEvent. 在custom_table_widget.cpp中,您应该有: ... CustomTableWidget::CustomTableWidget(QWidget *parent) : QTableWidget(parent) { setMouseTracking(true); // receives mouse move events even if no buttons are pressed. } void CustomTableWidget::m
16 2023-11-11
编程技术问答社区
如何根据内容调整QTableView高度?
在我的布局中,我动态生成的QTableViews似乎可以调整大小以显示一行.我想让表视图的容器具有滚动栏而不是单个表视图,这应该显示完整的内容. 解决方案 @savolai 非常感谢您的代码,对我来说效果很好.我只是做其他检查: void verticalResizeTableViewToContents(QTableView *tableView) { int rowTotalHeight=0; // Rows height int count=tableView->verticalHeader()->count(); for (int i = 0; i verticalHeader()->isSectionHidden(i)) {
6 2023-11-11
编程技术问答社区
如何触发 QTableView 中项目的编辑模式?
我现在正在使用qtableView和qstandarditemmodel. 在qtableView中,如果双击一个单元格,该单元格将进入编辑模式,您可以编辑其内容. 现在我有一个问题,我想触发代码(按命令)的项目编辑模式,该怎么办?我在qtableView或qstandarditemmodel中找不到适当的功能或插槽.我需要发出任何信号以进入编辑模式吗? ,如果我想知道编辑完成何时完成(用户按" Enter"或单击其他项目以离开编辑模式)??? )?? 感谢您的帮助 解决方案 请参阅: void QAbstractItemView::edit ( const QModelIndex & index ) [slot] void QAbstractItemView::closeEditor ( QWidget * editor, QAbstractItemDelegate::EndEditHint hint ) [virtual protected s
22 2023-11-11
编程技术问答社区
在 QTableWidget 中选择行和列,同时保持高亮显示
我有一个我设置的QTableWidget,使您无法选择单元格,但是可以通过其标题选择行/列.我遇到的问题是,当我选择一行时,它取消了选择的任何列,而对于列/行也相同.我希望能够以扩展选择行为和列以单打选择行为选择行,但独立于彼此.这是我在做的: ui->tableWidget->setSelectionMode(QAbstractItemView::NoSelection); connect(ui->tableWidget->horizontalHeader(),SIGNAL(sectionClicked(int)), this,SLOT(horizontalHeaderClicked(int))); connect(ui->tableWidget->verticalHeader(),SIGNAL(sectionClicked(int)), this,SLOT(verticalHeaderClicked(int))); 然后: void MatrixWidget::hor
12 2023-11-11
编程技术问答社区
在PyQt中连接QTableView selectionChanged信号会产生segfault。
我在PYQT应用程序中有一个QTableView,我想跟踪选择何时更改.我尝试将信号连接到插槽(如下)(使用上的建议: self.view.selectionModel().selectionChanged.connect(self.selChanged) 它连接到的插槽的定义为: def selChanged(self, selected, deselected): print "Sel changed" 但是,每当我加载QtableView所在的QMainWindow时,我就会立即分割故障. 我在这里做些愚蠢的事情吗? 解决方案 现在已经修复了,事实证明我在该机器上使用了QT的旧版本 - 这似乎会导致崩溃. 故事的寓意是:如果您的代码没有明智的原因崩溃,请检查您的所有依赖项(在这种情况下为QT和PYQT)是最新的. 其他解决方案 我也有类似的问题,解决方案在这里: pyside:segfault(?) > 即,替换:
16 2023-11-10
编程技术问答社区
从一行移动到另一行时,工具提示没有更新
i已分类qabstracttablemodel和data()函数中我在每行的最后一列中显示一个图像,鼠标悬停在鼠标上的工具提示. QVariant MyTableModel::data(const QModelIndex& index, int role) const { if (!index.isValid()) return QVariant(); if (role == Qt::DisplayRole) { switch (index.column()) { // few cases default: return QVariant(); } } else if (role == Qt::CheckStateRole && index.column() == 0) { int state= tableData.at(index.row()).state; if (state)
16 2023-10-24
编程技术问答社区
PyQt: 如何在QTableView的光标处插入文本
我有一个QTableView如下.我想按测试按钮并在光标处插入" A" - 例如,在" 11"的中间(行,列)=(2,2).也就是说,用户双击单元格(2,2),并将光标置于" 11"的中间,并按下测试.期望的结果:" 1A1". 这可行吗?如果是,怎么样?非常感谢. # coding: utf-8 import sys from PyQt4 import QtGui, QtCore from PyQt4.QtCore import * from PyQt4.QtGui import * MY_ARRAY = [['00', '01', '02'], ['10', '11', '12'], ['20', '21', '22']] class MyWindow(QTableView): def __init__(self, *args): super(MyWindow, self).__init__(
32 2023-10-18
编程技术问答社区
QSqlDatabase: 如何避免'qt_sql_default_connection'仍在使用和重复连接相关的警告?
对不起,如果这是一个微不足道的问题,但是我一直在尝试构建一个使用QSQLITE作为数据库的小.UI,并且使用QTableView在默认数据库文件上显示4列作为示例. 我在各个方面都调试了问题,更改了SQL的逻辑操作,并以更简单的方式重组了构造函数,但错误仍然存​​在. 完成所有参数后,我会遇到此错误: QSqlDatabasePrivate::removeDatabase: connection 'qt_sql_default_connection' is still in use, all queries will cease to work. 和 QSqlDatabasePrivate::addDatabase: duplicate connection name 'qt_sql_default_connection', old connection removed. 我查看了一些描述此错误的来源a>,this 其他来源.另外, 这 很有用,但没有
10 2023-09-21
编程技术问答社区
PyQt: 如何对QTableView的列(字符串和数字)进行排序
行self.tableView.setSortingEnabled(True)在单击标头时对表视图进行排序,但分类不正确.也就是说,它认为每列都是字符串(例如,它分类1,11,12,2,22,3等数字).我该如何纠正? 我的代码: self.model = QtGui.QStandardItemModel() with open(file_name_temp, "rt") as fileInput: i = 1 for row in csv.reader(fileInput): item = QtGui.QStandardItem() for field in row: items = [ item.setData(field, QtCore.Qt.UserRole) ] print(items) self.
88 2023-09-07
编程技术问答社区
如何在对数据源进行排序后更新QAbstractTableModel和QTableView?
我有一个自定义数据结构,我想使用QTableView在PYQT应用程序中显示.我正在使用QabstracttableModel的子类与数据通信.数据结构本身在一个单独的模块中,对pyqt一无所知. 使用QTableView显示和编辑数据有效,但是现在我想对数据进行排序,然后更新模型和查看. 阅读了Qabstracttablemodel及其祖先Qabstractitemmodel的QT文档后,我的第一种方法是尝试以下方法: class MyModel(QtCore.QAbstractTableModel): __init__(self, data_structure): super().__init__() self.data_structure = data_structure # ... def sort_function(self): self.layoutAboutToBeChanged.
28 2023-09-07
编程技术问答社区
淘宝网 如何对Excel文件中的QTableView列进行排序(字符串、数字和数据类型)?
这是一个后续问题: pyqt: QTableView列(字符串和数值) 现在,我打算为Excel文件进​​行相同的分类 这是我的代码: self.Upload = QtGui.QPushButton() self.Upload.clicked.connect(self.showOpenDialog) self.Table = QtGui.QPushButton() self.table.clicked.connect(self.LoadTable) def showOpenDialog(self): fileName = QtGui.QFileDialog.getOpenFileName(self, 'Open file', '/home') if (".xls" or ".xml" or ".xlsx" or ".xlsm") in fileName: with open(fileName, 'rb') as drate:
44 2023-09-07
编程技术问答社区
无法将 (null)::selectionChanged 连接到 QTableView
我有以下晋升的QTableView: class QRightClickableTableView : public QTableView { Q_OBJECT public: explicit QRightClickableTableView(QWidget *parent = 0): QTableView(parent) {} private slots: void mouseReleaseEvent(QMouseEvent *e) { if(e->button()==Qt::RightButton) emit rightClicked(); else if (e->button()==Qt::LeftButton) emit leftClicked(); } signals: void rightClicked(); void leftClicked(); }; 绑定QRightClickableAble
10 2023-09-03
编程技术问答社区
带有QStandardItemModel的QTableView。如何在编辑单元格时执行实时更新?
最近,我切换到QT.这已经花了一些时间,但是我开始找到自己的出路.但是,还有一个问题: 我想移植一个程序,该程序在编辑表视图中编辑单元格(QTableView带有QstandardItemModel)时会响应每个键的响应.这个想法是在用户输入表视图单元格中的文本时显示和更新单独表单上的可能性列表.每次键冲程后,需要根据某些单元格的编辑字段中的当前文本进行更新列表. 使用QTableView :: InstalleventFilter和QEVENT ::键盘,我可以在焦点焦点时获取每个键的按键,但是仅在编辑后更新单元格文本/模型,这禁止列表的实时更新. 仅在编辑完成后而不在用户输入期间发出模型的数据表信号. . 关于如何解决这个问题的想法? 我应该使用Qitemdelegate吗? 还是应该以某种方式连接QlineEdit,并且可以在视觉上看到它,因此可以执行此操作,因此用户似乎仍然直接在单元格内工作? 谢谢您的任何帮助 解决方案 它有效(也就是说,直到
30 2023-09-03
编程技术问答社区
如何获取QTableView的选定行?
我正在使用此模型使用QTableView类: class PaletteTableModel(QtCore.QAbstractTableModel): def __init__(self,colors = [[]],headers =[],parent=None): QtCore.QAbstractTableModel.__init__(self, parent) self.__colors=colors self._headers=headers def rowCount(self,parent): return len(self.__colors) def columnCount(self,parent): return 6 def headerData(self,section,orientation,role):
16 2023-08-25
编程技术问答社区
QTableView中的搜索/查找功能
我有一个Qwidget,其中有一个QTableView.我需要在表的第一列上具有查找功能,因此,当我单击Ctrl+F时,查找对话框将弹出. class Widget(QWidget): def __init__(self,md,parent=None): QWidget.__init__(self,parent) layout=QVBoxLayout(self) # initially construct the visible table tv = QTableView() # uncomment this if the last column shall cover the rest tv.horizontalHeader().setStretchLastSection(True) tv.show() # set black grid li
2 2023-08-23
编程技术问答社区
如何设置QTableView的行高?
我有QTableView和QAbstractTableModel.我要求行的高度等于24.我知道唯一的方法是调用QTableView::setRowHeight.由于该模型是动态的,因此可能会添加新行,但是我不想每次添加新行时都致电setRowHeight 我如何配置QTableView以使其对新添加的行使用相同的高度,或者可以将模型的高度发送到行高度? 解决方案 QT版本 QHeaderView *verticalHeader = myTableView->verticalHeader(); verticalHeader->setResizeMode(QHeaderView::Fixed); verticalHeader->setDefaultSectionSize(24); 对于 qt版本> = 5 使用 QHeaderView *verticalHeader = myTableView->verticalHeader(); verticalHeader
30 2023-08-12
编程技术问答社区
如何在 QTableView 中获取选中的行
观看了许多有关选择行号的线程后,我真的很困惑. 如何使用QStandardItemModel在QTableView中获得行号 setSelectionBehavior(QAbstractItemView::SelectRows); setSelectionMode(QAbstractItemView::SingleSelection); ,如果您有自己的选择方式,您可以解释其工作原理. 感谢您的帮助! 解决方案 方法selectionModel()返回QItemSelectionModel. 您可以使用QItemSelectionModel班级检查/更改/其他选择 示例: QItemSelectionModel *select = table->selectionModel(); select->hasSelection() //check if has selection select->selectedRows() // return sele
48 2023-08-12
编程技术问答社区