- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如果 QTableWidgetItem
已更改其文本,我正在寻找一种干净的方式来对事件使用react。我尝试使用 Signal QTableWidget::itemChanged(QTableWidgetItem *item)
但这会导致错误,因为我更改了我的 QTableWidgetItem
的背景颜色插槽,然后递归执行此插槽,因为 itemChanged。
我也尝试过使用信号 QTableWidget::itemEntered(QTableWidgetItem *item)
,但这与一些鼠标事件有关,这对我来说并不适用。
我尝试过的最后一种方法是像这样覆盖自定义 QTableWidget 类中的事件过滤器:
bool custom_DropTable::eventFilter(QObject *obj, QEvent *evt)
{
if (evt->type() == QEvent::KeyPress)
{
QKeyEvent *keyEvent = static_cast<QKeyEvent *>(evt);
if (keyEvent->key() == Qt::Key_Return)
{
emit si_itemTextEntered(this->currentItem());
return true;
}
else
{
return false;
}
}
else
{
return QObject::eventFilter(obj, evt);
}
}
但即使按下回车,信号也永远不会真正到达,所以设置文本。
有人对我有什么建议或改进吗?
最佳答案
您可以使用 QObject::blockSignals
使您的小部件不发送信号.这样你就可以使用信号 QTableWidget::itemChanged(QTableWidgetItem* item)
连接到一个插槽,该插槽将首先阻止表的信号,然后更改项目,然后取消阻止信号。这里有一个最小的例子:
#include <QApplication>
#include <QTableWidget>
#include <QTableWidgetItem>
// Declare table globaly so the slot can block its signals
QTableWidget* table;
// Slot
void itemChanged(QTableWidgetItem* item)
{
// Block table signals
table->blockSignals(true);
// Change item background color
item->setBackgroundColor(Qt::red);
// Append text
item->setText(item->text() + " edited");
// Unblock signals
table->blockSignals(false);
}
int main(int argc, char** argv)
{
// Create application
QApplication app(argc, argv);
// Create table
table = new QTableWidget(3, 4);
// Add items
for (int i = 0; i < table->rowCount() * table->columnCount(); i++)
{
int row = i / table->columnCount();
int col = i % table->columnCount();
table->setItem(row, col, new QTableWidgetItem(QString::number(i)));
}
// Connect
QObject::connect(table, &QTableWidget::itemChanged, itemChanged);
// Show table
table->show();
// Run
return app.exec();
}
关于c++ - QTableWidgetItem 文本已更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55723887/
给定一个 QTableWidget,有没有办法为单元格 (QTableWidgetItem) 设置一个不同于显示值的“隐藏”值? 例如,我的单元格应显示“项目 1”文本,但双击它编辑应该仅针对值 1,
我想在QTableWidgetItem 中画一条线。为了划清界线,我重新实现了 QStyledItemDelegate::paint 方法。 但是,当我滚动或选择 QTableWidget 中的项目时
如果 QTableWidgetItem 已更改其文本,我正在寻找一种干净的方式来对事件使用react。我尝试使用 Signal QTableWidget::itemChanged(QTableWidg
我想将附加数据与插入表中的每个 QTableWidgetItem 相关联,以便将来在单击表项时使用该数据。但这些数据不应该是可见的。我怎样才能做到这一点? 最佳答案 您可以使用 QTableWidge
我在 PyQt5 中创建了一个表,并通过此方法检索单元格中的数据。但是当我尝试 QTableWidgetItem 中的单元格变为 None 时。那么,我如何解决这个问题以及如何在特定单元格中插入其他确
我想实现可以选择和取消选择 QTableWidget 内的多个 QTableWidgetItem 的功能,以便了解这些 QTableWidgetItem 的值和“位置”以供进一步使用。 QTableW
我正在使用 Qt 和 python(以及 pyqt)编写一个 QGIS 插件。 在 QtDesigner 中,我有一个 QTableWidget 对象,如果有办法获取列项类型,我真的很挣扎。 例如下表
我正在使用 PySide 库用 Python 编写一个应用程序。我有一个QTableWidget,它大约每秒更新一次。问题是,我希望能够手动更改数据,并且我认为如果我可以找出用户是否正在更改单元格中的
我的程序中有一个 QTableWidget。我希望它的行和列根据表格小部件中的时间条目改变颜色。当我第一次添加时间时,它将与当前系统时间进行比较,并且颜色更改确实生效,但随着时间的推移,它不会跟上并且
我有一个qtablewidgetitem,里面有一个QCheckbox 禁用qtablewigetitem时如下 flags = self.item(row+1, self.columns["
有没有办法在QTableWidgetItem中使用富文本? 目前我有这个: widgetItem = QtWidgets.QTableWidgetItem() widget = QtWidgets.Q
您可能知道,您可以使用 setCellWidget 为 QTableWidget 中的单元格设置小部件: table->setCellWidget(0, 0, new QProgressBar); 在
我正在尝试将 QTableWidgetItem 转换为子类。我有一个这样的类层次结构: (Parent -> Child) QTableWidgetItem -> SortableTableWidge
我有一个 QTableWidget 的子类,代码如下: connect(this, SIGNAL(cellChanged(int, int)), this, SLOT(pushCellChange(i
我有一个 QtGui.QTableWidgetItem,我通过下面的 createRow 函数添加到表格中: def createRow(self, listA): rowNum = self
以下 PyQt4 示例演示了我的问题。 QTableWidget 单元格中的文本很好地居中,直到您编辑单元格。当您编辑单元格时,文本左对齐。 我想在每个单元格的编辑过程中保持居中对齐。 import
我有一个QThread,它更新QTableWidget列值。当用户双击该列的一行时,QThread 停止更新值以让用户编辑上次读取的值。 如果用户按 Enter,则发出 cellChanged(int
我认为标题不言自明:给定一个 QTableWidget,其中的项目由 setItem 成员函数添加,我想知道每个项目的边距是多少。特别是,我想要这些单元格中左边距的宽度。 最佳答案 我准备了一个计算用
我有一个 QTableWidget,上面有一些 QTableWidgetsItems。有些项目使用复选框。我使用以下代码添加了复选框: QTableWidgetsItem->setCheckState
现在我可以在函数 eventFilter() 中处理我的 QTableWidget 中的所有按键(在调用 myTable->viewport()->installEventFilter( this);
我是一名优秀的程序员,十分优秀!