从Qtablewidget读取QDate并将其存储在QDate上

时间:2016-09-01 16:17:41

标签: c++ qt qtablewidget qtablewidgetitem 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 个答案:

答案 0 :(得分:0)

使用QDate::fromString并且不要忘记指定正确的格式:

http://doc.qt.io/qt-5/qdate.html#fromString-1

答案 1 :(得分:0)

据我了解您的问题,您将在 string 中有一个日期,现在您需要将其用作{publicID: 'da22', score: '2'}, {publicID: '17hy', score: '2'}, {publicID: 'ye66', score: '2'}对象。在这种情况下,您应该使用QDate静态方法解析字符串。

方法签名:

QDate:fromString

示例:

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

文档:http://doc.qt.io/qt-5/qdate.html#fromString-1

答案 2 :(得分:0)

谢谢,我已经知道“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(我是欧洲人!)

感谢您的帮助,我希望这个解决方案可以帮助其他人!