Tôi có QTableView được kết nối với QSqlTableModel.
Trong cột đầu tiên, chỉ có ngày ở định dạng này: 2010-01-02
Tôi muốn cột này để hiển thị ngày ở định dạng này (nhưng không làm thay đổi các dữ liệu thực tế): 02.01.2010
tôi biết rằng tôi phải tạo một QItemDelegate cho cột này, nhưng tôi không biết làm thế nào tôi có thể đọc dữ liệu hiện có và ghi đè lên nó với một cái gì đó khác nhau. Bạn có bất kỳ ý tưởng làm thế nào để quản lý điều đó?Hiển thị dữ liệu khác trong QTableView với QItemDelegate
6
A
Trả lời
4
Một đại biểu mục không nhất thiết phải thay đổi dữ liệu, nó chỉ hiển thị dữ liệu. Ngoài ra, nếu bạn đang sử dụng Qt 4.4 hoặc mới hơn, hãy xem QStyledItemDelegate thay thế - đó là chủ đề nhận thức và trông đẹp hơn.
Có ví dụ về đại biểu của mục trong this article (có vẻ như là bản sao của tài liệu chính thức hiện đã hết hoặc không hoạt động).
Vì tất cả những gì bạn thực sự muốn làm là tùy chỉnh văn bản, thay vào đó bạn đã cân nhắc sử dụng mô hình proxy và chỉ trả về QString tùy chỉnh cho DisplayRole của cột ngày?
14
Giải pháp đơn giản nhất là để tạo ra một lớp con QStyledItemDelegate
và reimplement displayText(...)
tức
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;
};
Sau đó, theo quan điểm của bạn -
setItemDelegateForColumn(/*date column*/, new DateFormatDelegate("MM.dd.yyyy", this));
Các vấn đề liên quan
- 1. Qt Sử dụng QItemDelegate tùy chỉnh cho QTableView
- 2. PyQt - Triển khai QAbstractTableModel để hiển thị trong QTableView
- 3. Dữ liệu SQLite hiển thị
- 4. Biểu đồ hình tròn hiển thị "khác" khi hiển thị dữ liệu
- 5. Hiển thị OpenCV cấu trúc dữ liệu iplimage với wxPython
- 6. Vim - Hiển thị kiểu dữ liệu
- 7. Đường ray hiển thị dữ liệu JSON với Model Root
- 8. ZEND, hiển thị chế độ xem khác nhau với dữ liệu
- 9. lệnh set_xlim, set_ylim, set_zlim trong matplotlib không hiển thị dữ liệu được hiển thị
- 10. Làm cách nào để hiển thị danh sách các bảng trong cơ sở dữ liệu khác?
- 11. Sử dụng dữ liệu JSON trong hiển thị Javascript D3
- 12. Cột ảo trong QTableView?
- 13. hiển thị dữ liệu sau mỗi 10 giây trong Android
- 14. Hiển thị dữ liệu trong bảng html ASP.NET
- 15. Hiển thị nhiều trường dữ liệu trong BoundField của Gridview
- 16. Hiển thị bảng dữ liệu trong ứng dụng C# WPF
- 17. Cách hiển thị dữ liệu trong datagridview từ cơ sở dữ liệu truy cập
- 18. hiển thị Ngày khác nhau trong jsp
- 19. Dữ liệu hiển thị Bảng tính Google Tài liệu từ hàng khớp với tiêu chí
- 20. Hiển thị dữ liệu trong nguồn cấp dữ liệu nguyên tử
- 21. Lọc dữ liệu json và hiển thị dữ liệu trong lưới
- 22. Hiển thị dữ liệu từ cơ sở dữ liệu SQL trong GridView
- 23. Làm cách nào để yêu cầu Qt luôn hiển thị trình chỉnh sửa trong QTableView?
- 24. Tín hiệu sắp xếp QTableView?
- 25. Hiển thị dữ liệu thời gian thực hiệu suất cao
- 26. MVC 4 Chú thích dữ liệu "Hiển thị" Thuộc tính
- 27. SSRS kết quả hiển thị dữ liệu theo chiều ngang
- 28. Hiển thị bộ tải Ajax trước khi tải dữ liệu
- 29. Validation ErrorTemplate không hiển thị trên các lỗi dữ liệu
- 30. Highcharts không hiển thị chuỗi có nhiều điểm dữ liệu
Hoặc các đại biểu hoặc các mô hình ủy quyền sẽ làm việc khá tốt trong tình huống này. Các đại biểu có lẽ là gần gũi hơn với những gì dự định, tuy nhiên. –
vấn đề của tôi là, rằng tôi không nhận được làm thế nào để làm cho nó với một QItemDelegate. phương thức paint() - sẽ không hoạt động với tôi – Berschi
Điều gì đặc biệt là vấn đề với sơn()? – ChrisV