Я хочу показать элемент «В этом представлении нет элементов», если в подключенной модели QTreeView
(установленной QSortFilterProxyModel
) нет элементов для отображения.
Как я могу реализовать такие вещи?
Спасибо за маленькие подсказки.
Я хочу показать элемент «В этом представлении нет элементов», если в подключенной модели QTreeView
(установленной QSortFilterProxyModel
) нет элементов для отображения.
Как я могу реализовать такие вещи?
Спасибо за маленькие подсказки.
Одним из решений является переопределение события рисования древовидного представления и рисование пользовательского текста, когда в представлении нет элементов. Вам нужно создать подкласс 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);
}
}
};