У меня есть QTableWidget
с 3 столбцами.В первых двух столбцах хранится элемент QDateTimeEdit
.Третий хранит QSpinBox
, в котором должна быть указана продолжительность между двумя значениями QDateTimeEdit
в этой строке.
Как подключить сигнал QDateTimeEdit
для автоматического обновления длительности в QSpinBox
в случае изменения одной даты-времени?
...
for (int i_row = 0; i_row < 100; ++i_row){
QTableWidget *t = ui->tableWidget;
QDateTimeEdit *start = new QDateTimeEdit();
QDateTimeEdit *end = new QDateTimeEdit();
t->setCellWidget(i_row,0,start);
t->setCellWidget(i_row,1,end);
QSpinBox *sp = new QSpinBox();
sp->setReadOnly(true);
t->setCellWidget(i_row,2,sp);
connect(start, SIGNAL(dateTimeChanged(const QDateTime &)), this, SLOT(adjustDuration()));
connect(end, SIGNAL(dateTimeChanged(const QDateTime &)), this, SLOT(adjustDuration()));
}
со слотом:
void mainWindow::adjustDuration()
{
QDateTimeEdit *s = qobject_cast<QDateTimeEdit *>(sender());
// How do I get row number of the sender within QTableWidget in order to be able to access proper 2nd QDateTimeEdit and QSpinBox?
// Simplified speaking: I would like to get the value i_row from the code before
}
Я полагаю, это возможно с помощью функции ->parent()
?