Читать QDate из Qtablewidget и сохранять его в QDate

У меня проблема с qdate и qtablewidget.

Когда я обновляю элемент в qtablewdiget через соединение, я вызываю функцию "updateProdotto". У меня проблема с чтением нового qdate, который я вставляю, и с сохранением его в новой переменной qdate.

Я уже искал в Интернете, но безрезультатно, потому что никто не выполняет ту операцию, которая мне нужна с типом qdate.

connect(ui->tableViewProdotti,SIGNAL(itemChanged(QTableWidgetItem*)),this,SLOT(updateProdotto())); 

void UserInterface::updateProdotto() {
int colonna = ui->tableViewProdotti->currentColumn();
int riga = ui->tableViewProdotti->currentRow();

if(colonna == 1)
    art[riga]->setNome(ui->tableViewProdotti->item(riga,1)->text().toStdString());
if(colonna == 2)
    art[riga]->setCategoria(ui->tableViewProdotti->item(riga,2)->text().toStdString());
 if(colonna == 5) { // this is for date
   QDate date= // read date and store it
   art[riga]->setDate(date);
 }
} 

Как я могу это сделать?

3 ответа

Спасибо, я уже знаю о "QDate::fromstring", но в моем случае это не работает. Я использую QDate::fromString в другой функции моего проекта, но в этом случае правильное решение (через 2 часа после прочтения ваших ответов) это:

    QString format="yyyy-MM-dd";
    QTableWidgetItem* date= ui->tableViewProdotti->item(riga,5);
    QString text=date->text();
    QDate date1=QDate::fromString(text,format);
    art[riga]->setDataAcquisto(date1);

Моя ошибка была связана с указателем QTableWidgetItem и форматом yyyy-MM-dd (как стандарт), а в другой функции я использовал dd.MM.yyyy (я европеец!)

спасибо за вашу помощь, я надеюсь, что это решение может помочь другим людям!

Использование QDate::fromString и не забудьте указать правильный формат:

http://doc.qt.io/qt-5/qdate.html

Насколько я понимаю вашу проблему, у вас будет дата в строке, и теперь вам нужно будет использовать ее как QDate объект. В этом случае вам следует проанализировать строку, используя QDate:fromString статический метод.

Подпись метода:

QDate QDate::fromString(const QString & string, const QString & format)

Пример:

QDate date = QDate::fromString("1MM12car2003", "d'MM'MMcaryyyy");
// date is 1 December 2003

Документация: http://doc.qt.io/qt-5/qdate.html

Другие вопросы по тегам