1

QTreeView如果连接的模型(由 设置QSortFilterProxyModel)没有要显示的元素,我想显示一个项目“此视图中没有元素”。

我怎样才能实现这样的事情?

感谢您的小提示。

4

1 回答 1

5

解决方案之一是覆盖树视图的绘制事件并在视图中没有项目时绘制自定义文本。您需要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);      
        }
    }
};
于 2014-05-02T13:38:50.397 回答