【问题标题】:How to add qdate to qtableview如何将 qdate 添加到 qtableview
【发布时间】:2014-01-20 07:33:45
【问题描述】:

我想将Qdate 添加到我的表中说QTableview。问题是如果我将其转换为字符串,我可以添加和检索数据。但我只想在我的模型中存储为日期。

void MainWindow::setUpTabel()
{
   QDateTime myDate;
   myDate.setDate(QDate::currentDate());
   //myModel 
   QStandardItemModel model = new QStandardItemModel(this);
   QStandardItem *item = new QStandardItem;
   item.setData(myDate,Qt::UserRole);
   //Myview is also created and set the model to it
   m_tableView->setModel(model);
 }

问题是我无法在表格中看到日期。

【问题讨论】:

  • 也许您需要改用Qt::DisplayRole
  • 是的,但这意味着 qdate 是一个字符串。我希望它只是日期类型。
  • 不完全是。它将作为字符串可见,但在内部存储为 QVariant,您可以使用 data() 函数获取它。
  • 是的,谢谢,但如果我使用 QVariant::canconvert() 检查单元格是否有日期,它将显示为 false。
  • canConvert() 调用什么?

标签: c++ qt qtableview qdatetime


【解决方案1】:

如文档所述,您必须将项目设置到模型中,指定要设置项目的行和列。

http://qt-project.org/doc/qt-4.8/qstandarditemmodel.html

修改你的代码:

void MainWindow::setUpTabel()
{
   int row = 0, column = 0; // here you decide where is the item

   QDateTime myDate;
   myDate.setDate(QDate::currentDate());

   QStandardItemModel model = new QStandardItemModel(this);
   QStandardItem *item = new QStandardItem(myDate);

   model.setItem(row, column, item);

   m_tableView->setModel(model);
 }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-07
    • 2020-05-13
    • 1970-01-01
    • 1970-01-01
    • 2013-10-06
    相关资源
    最近更新 更多