Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何在QTreeView中设置QDateTimeEdit的显示格式和类似属性?_C++_Qt - Fatal编程技术网

C++ 如何在QTreeView中设置QDateTimeEdit的显示格式和类似属性?

C++ 如何在QTreeView中设置QDateTimeEdit的显示格式和类似属性?,c++,qt,C++,Qt,如何设置QTreeView中使用的QDateTimeEdit对象的-say-和属性 (在编辑QVariant(QDateTime)值时使用它们。) 是否有可能用于该目的 遗憾的是,没有列出QDateTimeEdit的那些属性。另一方面,委员会认为: 从4.3及以上版本中,可以使用qproperty语法设置任何可设计的Q_属性 因此,我尝试过这样的方法: QApplication app(argc, argv); // first try // app.setStyleSheet( // " Q

如何设置QTreeView中使用的QDateTimeEdit对象的-say-和属性

(在编辑
QVariant(QDateTime)
值时使用它们。)

是否有可能用于该目的

遗憾的是,没有列出QDateTimeEdit的那些属性。另一方面,委员会认为:

从4.3及以上版本中,可以使用qproperty语法设置任何可设计的Q_属性

因此,我尝试过这样的方法:

QApplication app(argc, argv);
// first try
// app.setStyleSheet(
//  " QDateTimeEdit { displayFormat: \"yyyy-MM-dd hh:mm:ss\" ; }");
app.setStyleSheet(
  " QDateTimeEdit { qproperty-displayFormat: \"yyyy-MM-dd hh:mm:ss\" ; }");
不过,这两种样式表都没有被选中

设置这些属性的正确样式表语法是什么


或者是否有其他方法为应用程序中的这些属性设置默认值?

可以通过修改ItemDelegate来修改TableView、TreeView或ListView中使用的QDateTime显示格式

在该方法中,我们派生StyledItemDelegate来覆盖createEditor和displayText方法,然后将新委托应用于所需的视图

DateFormatDelegate.hpp:

#include <qstyleditemdelegate.h>

class DateFormatDelegate : public QStyledItemDelegate {
  Q_OBJECT
  public:
  explicit DateFormatDelegate(QObject* parent = Q_NULLPTR)
     :QStyledItemDelegate(parent) {}
  QString displayText(const QVariant& value, const QLocale& locale) const Q_DECL_OVERRIDE;
  QWidget * createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const override;
};
如果派生了视图,也可以直接在构造函数中应用它

此方法允许修改任何编辑器小部件的样式,而无需担心以后的修改或视图组织


不过可能还有更优雅的解决方案。

在TableView、TreeView或ListView中使用的QDateTime显示格式可以通过修改ItemDelegate来修改

在该方法中,我们派生StyledItemDelegate来覆盖createEditor和displayText方法,然后将新委托应用于所需的视图

DateFormatDelegate.hpp:

#include <qstyleditemdelegate.h>

class DateFormatDelegate : public QStyledItemDelegate {
  Q_OBJECT
  public:
  explicit DateFormatDelegate(QObject* parent = Q_NULLPTR)
     :QStyledItemDelegate(parent) {}
  QString displayText(const QVariant& value, const QLocale& locale) const Q_DECL_OVERRIDE;
  QWidget * createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const override;
};
如果派生了视图,也可以直接在构造函数中应用它

此方法允许修改任何编辑器小部件的样式,而无需担心以后的修改或视图组织


不过,可能还有更优雅的解决方案。

您的树状视图是否使用模型?@vahancho,是的,
qabstractemodel
。模型的
data()
成员为某些索引返回一个
QVariant(QDateTime)
值。是什么阻止您从data()函数返回格式化的日期/时间值呢?@vahancho,那么
QTreeView
将在其上使用
QEditLine
而不是
QDateTimeEdit
小部件。而
QDateTimeEdit
对于此类值更为优越,因为它使更改日期/时间更为方便,甚至提供了一个日历弹出窗口…您可以尝试使用项委托进行树状视图节点编辑(QDateTimeEdit)并从data()函数返回格式化字符串。您的树状视图是否使用模型?@vahancho,是,a
qabstractemodel
。模型的
data()
成员为某些索引返回一个
QVariant(QDateTime)
值。是什么阻止您从data()函数返回格式化的日期/时间值呢?@vahancho,那么
QTreeView
将在其上使用
QEditLine
而不是
QDateTimeEdit
小部件。而
QDateTimeEdit
对于此类值更为优越,因为它使更改日期/时间更为方便,甚至提供了一个日历弹出窗口…您可以尝试使用项委托进行树状视图节点编辑(QDateTimeEdit)并从data()函数返回格式化字符串。
ui->TableView_MyTable->setIteemDelegate(
      new DateFormatDelegate(ui->TableView_MyTable)));