我有一個QTableView與QSqlTableModel連接。
在第一列,目前在格式僅日期:2010-01-02
我想這個欄,顯示在此格式的日期(但不改變真實數據):02.01.2010
我知道我必須創建一個QItemDelegate對於本專欄,但我不知道如何讀取現有數據並用不同的東西覆蓋它。你有任何想法如何管理?用QItemDelegate顯示QTableView中的其他數據
6
A
回答
4
一個item委託並不一定會改變數據,它只是呈現數據。另外,如果您使用的是Qt 4.4或更新的版本,請查看QStyledItemDelegate - 它是主題感知的,並且看起來更好。
有一個this article項目代表的例子(這似乎是正式文檔的鏡像,現在已經停止或消失)。
因爲你真正想要做的就是自定義文本,你有沒有考慮過使用代理模型,而只是返回日期列的DisplayRole的自定義QString?
14
最簡單的解決方案是創建一個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));
相關問題
- 1. 從QTableView中刪除QItemDelegate
- 2. Qt爲QTableView使用自定義QItemDelegate
- 3. PySide/pyQt在QTableView中顯示數據
- 4. QTabWidget裏面的QTableView不顯示數據
- 5. 圖只顯示1圖中的數據,但不顯示其他
- 6. 使用QItemDelegate顯示圖像縮略圖
- 7. QTableView中沒有顯示的行數
- 8. CakePHP的:與其他表的數據表顯示數據
- 9. 如何將QWidget與QItemDelegate和QTableView一起使用
- 10. 基於其他列表的數據庫顯示數據laravel 5
- 11. QTableView中和ItemDelegate用於顯示欄
- 12. 顯示懸停時的表格中的其他數據
- 13. 爲QTableView QItemDelegate編輯器上的自定義小部件
- 14. 顯示來自其他表中的數據while while循環
- 15. 如何在視圖中顯示來自其他表的數據?
- 16. 來自SqlDataReader的數據不會顯示在其他語句中
- 17. 如何讓表中的數據不再顯示在其他
- 18. 顯示不在其他表中的數據加入codeigniter
- 19. 顯示圖像以及表格中的其他數據
- 20. QTableView添加到設計器中:不顯示數據
- 21. 如何將數據庫數據顯示到其他頁面?
- 22. 顯示一個隱藏的列QTableView中
- 23. pyQt QTableView不顯示數字(int,float等)
- 24. PHP顯示其他的div
- 25. 用一個連接(配置)顯示數據,其他不是
- 26. 從其他數據庫顯示數據時在vBulletin中的錯誤字體
- 27. 在數據框中添加兩列並顯示其他列
- 28. 在其他模型視圖中顯示一個模型數據?
- 29. 如何僅顯示從數據庫登錄用戶數據而不顯示其他數據?
- 30. PHP:從數據庫中,然後在其他頁面顯示計數數據
兩個委託或代理模式將在這種情況下工作得很好。但是,代表可能更接近於意圖的內容。 –
我的問題是,我沒有得到如何使它與QItemDelegate。 paint() - 方法不適用於我 – Berschi
具體來說,paint()的問題是什麼? – ChrisV