QTableView에서 QITEMDELEGATE와 다른 데이터를 표시하십시오
-
19-09-2019 - |
문제
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));
제휴하지 않습니다 StackOverflow