0

我对 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);
 }
} 

我怎样才能做到这一点?

4

3 回答 3

0

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

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

于 2016-09-01T17:07:36.597 回答
0

据我了解您的问题,您将在字符串中有一个日期,现在您需要将其用作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#fromString-1

于 2016-09-01T17:12:57.517 回答
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 (我是欧洲人!)

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

于 2016-09-02T08:26:07.453 回答