Реклама

Работа с QFileSystemModel

QFileSystemModel, QTableView

@Arrow9 января 2017 г. 21:42#

Для работы с QFileSystemModel использую QTableView. В нем отображаются заголовки колонок: name, size и т.д.

Как можно изменить отображаемые имена заголовков?

И второй вопрос как установить растягивание одной из колонок, чтобы она занимала все сободное пространство?

Для работы с шириной колонок нашел только метод

setColumnWidth()
@EVILEG9 января 2017 г. 23:03#ответил @Arrow

1 Вопрос - наследоваться от QFileSystemModel и переопределить метод headerData

QVariant MyFileSystemModel::headerData(int section, Qt::Orientation orientation, int role) const
{

    if ((section == 0) && (role == Qt::DisplayRole) && (orientation == Qt::Horizontal))
    {
        return "Folder";
    } else {
        return QFileSystemModel::headerData(section, orientation, role);
    }
}

2 Вопрос - Установить растяжение колонки у самого QTableView, например у колонки под индексом 1:

ui->tableView->horizontalHeader()->setSectionResizeMode(1, QHeaderView::Stretch);

Реклама

@Arrow10 января 2017 г. 1:48#

Спасибо.

@Arrow10 января 2017 г. 2:16#

Решил первый вопрос по другому и очень не правильно:

QTableWidget *tbl = new QTableWidget(this);
QStringList strList;
strList << "Имя" << "Размер" << "Тип" << "Дата";
tbl->setColumnCount(4);
tbl->setHorizontalHeaderLabels(strList);
QHeaderView *header = tbl->horizontalHeader();
ui->leftTableView->setHorizontalHeader(header);
// Без этого отображается полоса прокрутки в ненужно месте
tbl->setVisible(false);

Замена заголовка своей таблицей.

@EVILEG10 января 2017 г. 9:58#ответил @Arrow

Да. Вы правы. Решение не правильное. С архитектурной точки зрения не правильное.

Вот это данные:

QStringList strList;
strList << "Имя" << "Размер" << "Тип" << "Дата";

А данные следует хранить в модели данных, а не в представлении, как Вы сделали. В небольшом проекте это не будет проблемой, а вот в крупном проекте такой подход может создать проблемы. Всё-таки интерфейс должен быть более менее унифицирован и всю подобную информацию необходимо забирать из модели данных.

Реклама

@Arrow11 января 2017 г. 0:20#

Спасибо. Знаю, что нужно разделять, но так не хотелось наследоваться.

Ответы

Только авторизованные пользователи могут отвечать на форуме.
Пожалуйста, Авторизуйтесь или Зарегистрируйтесь

Реклама