2016-01-12 2 views
1

У меня есть вопрос относительно сигналов в поле EnhTableWidget:сигнала при изменении значения (перед возвращением) поля из EnhTableWidget

  • когда я щелкнуть в ячейке из этой таблицы - -> .. currentCellChanged (интермедиат, Int, Int, Int) излучается

  • когда я нажмите возвращение в ячейке таблицы -> .. cellChanged (целое, целое) излучается

мне нужно, чтобы начать расчет-метод, когда значение ячейки изменяется, но перед тем возвращение pressed.Is есть сигнал для того, что-то как

когда я измените значение поля (нет возврата!) этой таблицы -> .. ?? излучается

+0

Что такое EnhTableWidget? –

ответ

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 с помощью специального ключаPressHandler, если вы не хотите подкласса:

tableWidget->installEventFilter(keyPressHandler); 
+0

В моем коде сигнал itemChanged испускается только после того, как я нажал return. Но я хочу, чтобы сигнал был испущен, прежде чем нажимать return (чтобы убедиться, что последний пользовательский вход учитывается, даже если пользователь выходит из таблицы без нажатия возврата) – user3443063

+0

Обновлено мой ответ выше –

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; 
} 
Смежные вопросы