我有一个关于EnhTableWidget字段信号的问题:
当我点击该表的单元格时 - > .. currentCellChanged(int,int,int,int)被发出
当我在表格的单元格中点击返回时 - > 发出 cellChanged(int,int)
当一个单元格的值发生变化时,我需要启动一个计算方法,但是返回之前是。有一个信号,比如
当我更改该表的字段值(尚未返回!)时 - >发出 ??
答案 0 :(得分:1)
发出itemChanged信号
void QTableWidget::itemChanged(QTableWidgetItem * item)
此外,您可以尝试捕获dataChanged信号,该信号继承自QAbstractItemView类
void QAbstractItemView::dataChanged(const QModelIndex & topLeft, const QModelIndex & bottomRight, const QVector<int> & roles = QVector<int> ())
或者您可以继承QTableWidget并重新实现keyPressEvent或使用event filter使用自定义keyPressHandler,如果您不想继承子类:
tableWidget->installEventFilter(keyPressHandler);
答案 1 :(得分:1)
创建一个自定义委托,处理单元格编辑器发出的更改:
MyDelegate::MyDelegate(QObject *parent) : QStyledItemDelegate(parent)
{
}
QWidget* MyDelegate::createEditor(QWidget* parent,const QStyleOptionViewItem &option,const QModelIndex &index) const
{
// Assume you want a QLineEdit editor for the QTableWidget cell
QLineEdit* editor = new QLineEdit(parent);
// Get notified when editor changes
QObject::connect(editor, &QLineEdit::textEdited, this, [=](const QString &newValue) {
qDebug() << "Cell has changed without pressing return: " << newValue;
}
return editor;
}