문제

QSQLTableModel과 연결된 QTableView가 있습니다.
첫 번째 열에는이 형식의 날짜 만 있습니다. 2010-01-02
이 열 이이 형식으로 날짜를 표시하기를 원하지만 (실제 데이터를 변경하지 않고) : 02.01.2010
이 열에 QITEMDELEGATE를 만들어야한다는 것을 알고 있지만 기존 데이터를 읽고 다른 것으로 덮어 쓰는 방법을 모르겠습니다. 당신은 그것을 관리하는 방법을 알고 있습니까?

도움이 되었습니까?

해결책

항목 대의원이 반드시 데이터를 변경하지는 않지만 데이터 만 렌더링합니다. 또한 QT 4.4 또는 최신을 사용하는 경우 대신 QSTYLEDITEMDELEGATE를보십시오. 테마를 인식하고 더 멋지게 보일 것입니다.

항목 대의원의 예가 있습니다 이 기사 (지금은 다운되었거나 사라진 공식 문서의 거울 인 것 같습니다).

실제로 원하는 것은 텍스트를 사용자 정의하는 것입니다. 대신 프록시 모델을 사용하는 것을 고려하고 날짜 열 DisplayRole에 대한 사용자 정의 QString을 반환합니까?

다른 팁

가장 간단한 솔루션은 a를 만드는 것입니다 QStyledItemDelegate 서브 클래스 및 상환 displayText(...)

class DateFormatDelegate : public QStyledItemDelegate
{
public:
 DateFormatDelegate (QString dateFormat, QObject *parent = 0) : 
  QStyledItemDelegate(parent),
  m_dateFormat(dateFormat)
 {
 }

 virtual QString displayText(const QVariant & value, const QLocale & locale ) const
 {
  Q_UNUSED(locale);
  return value.toDate().toString(m_dateFormat);
 }

private:
 QString m_dateFormat;
};

그런 다음 당신의 견해로 -

setItemDelegateForColumn(/*date column*/, new DateFormatDelegate("MM.dd.yyyy", this));
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top