【发布时间】:2015-06-06 07:03:50
【问题描述】:
如果连接的QTreeView 模型(由QSortFilterProxyModel 设置)没有要显示的元素,我想显示一个项目“此视图中没有元素”。
我怎样才能实现这些东西?
感谢您的小提示。
【问题讨论】:
标签: qt qt5 qtreeview qstandarditemmodel
如果连接的QTreeView 模型(由QSortFilterProxyModel 设置)没有要显示的元素,我想显示一个项目“此视图中没有元素”。
我怎样才能实现这些东西?
感谢您的小提示。
【问题讨论】:
标签: qt qt5 qtreeview qstandarditemmodel
其中一个解决方案是覆盖树视图的绘制事件并在视图中没有项目时绘制自定义文本。您需要通过以下方式对QTreeView 进行子类化:
class TreeView : public QTreeView
{
[..]
protected:
void paintEvent(QPaintEvent * event)
{
if (model() && model()->rowCount() > 0) {
QTreeView::paintEvent(event);
} else {
// If no items draw a text in the center of the viewport.
QPainter painter(viewport());
QString text(tr("There are no elements in this view"));
QRect textRect = painter.fontMetrics().boundingRect(text);
textRect.moveCenter(viewport()->rect().center());
painter.drawText(textRect, Qt::AlignCenter, text);
}
}
};
【讨论】: