QStyledItemDelegate 和 QItemDelegate分别是什么,有什么区别
时间: 2024-06-11 20:10:32 浏览: 18
QStyledItemDelegate和QItemDelegate都是Qt中用于自定义QTableView、QListView、QTreeView等控件的项的外观和行为的委托类。
区别在于,QStyledItemDelegate是Qt5新增的类,提供了更多的样式控制,如支持使用QStyle样式表、鼠标悬浮时的样式、选中时的样式等,而QItemDelegate则是Qt4中的类,样式控制较为简单。同时,QStyledItemDelegate对于不同的控件有不同的样式表现,比如在QTreeView中,QStyledItemDelegate可以自动调整缩进、折叠/展开图标等。因此,一般推荐使用QStyledItemDelegate。
相关问题
QStyledItemDelegate
QStyledItemDelegate 是 Qt 框架中的一个类,用于在 QAbstractItemView 中对单元格进行自定义绘制。它可以继承自 QItemDelegate,重写 paint() 和 sizeHint() 函数,实现单元格的自定义绘制和大小计算。
在 QTableView 中,可以通过设置 QStyledItemDelegate 对象来实现单元格的自定义绘制。例如,可以通过继承 QStyledItemDelegate 类并重写 paint() 函数,来实现单元格的绘制,如下所示:
```cpp
class MyDelegate : public QStyledItemDelegate
{
public:
void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const override
{
// 自定义绘制代码
// ...
}
};
```
然后,在 QTableView 中设置该自定义委托:
```cpp
MyDelegate *delegate = new MyDelegate;
tableView->setItemDelegate(delegate);
```
这样,单元格就会使用 MyDelegate 中重写的 paint() 函数进行绘制了。
需要注意的是,QStyledItemDelegate 只能用于单元格的自定义绘制,不能用于单元格的编辑。如果需要实现单元格的编辑,需要使用 QItemDelegate 或者 QAbstractItemDelegate。
qtableview item margin c++ qt4.8 QItemDelegate
要设置QTableView中项目的边距,您可以使用QItemDelegate类。具体来说,您需要实现QItemDelegate的sizeHint()函数,并在该函数中设置特定项的边距。这是一个示例实现:
```cpp
class MyItemDelegate : public QItemDelegate
{
public:
QSize sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const override
{
QSize size = QItemDelegate::sizeHint(option, index);
size.setHeight(size.height() + 10); // 上下各增加10像素
size.setWidth(size.width() + 10); // 左右各增加10像素
return size;
}
};
```
然后,您需要将此委托设置为QTableView中的委托,如下所示:
```cpp
MyItemDelegate *delegate = new MyItemDelegate();
tableView->setItemDelegate(delegate);
```
请注意,此代码适用于Qt 4.8。对于Qt 5及更高版本,您可以考虑使用QStyledItemDelegate代替QItemDelegate。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)