С табличным представлением данных проблем нет. Это происходит только тогда, когда курсор реализован...
Курсор разбивается на отдельные ячейки как в QTreeView, так и в QTableView.
Как бы я ни старался, каждый раз курсор разбивается на отдельные ячейки, которыми можно управлять, по крайней мере, с помощью клавиш курсора. Но я не хочу такого поведения. Я вообще не хочу работать с отдельными ячейками, а графический интерфейс "не должен" позволять выбирать, отмечать, перемещать в них ячейки и т. д. (даже если в ячейках отключено редактирование).
Правильно работает только опция древовидного просмотра в основных настройках. Как только я включу выбор нескольких строк. Курсор сразу разбивается на ячейки.
Мне интересно, какое решение в итоге правильное. Влияет ли такое поведение на модель (данные хранятся не в строках с одним столбцом, а в строках и столбцах) или такое поведение влияет на представление.
Я тоже думаю, возможно ли это как-то настроить и изменить qtreeview или создать совершенно новое представление на основе qtreeview или qtableview
Может ли кто-нибудь указать мне правильное направление? Я уже обращался к ChatGpt, это очень помогло, но в этом он мне не помог. Возможно, я задал ему неправильные вопросы.
Тестовый код здесь:
Код: Выделить всё
#include
#include
#include
#include
#include
#include
#include
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
// Create base layout
QWidget mainWidget;
QVBoxLayout layout(&mainWidget);
// Create 3 rows and 3 columns model
QStandardItemModel model(3, 3);
model.setHorizontalHeaderLabels({"Code", "Name", "Description"});
// insert data
for (int row = 0; row < 3; ++row)
{
for (int column = 0; column < 3; ++column)
{
QStandardItem *item = new QStandardItem(QString("Data %1").arg(row * 3 + column + 1));
model.setItem(row, column, item);
}
}
// Create QTreeView
QTreeView view1;
view1.setModel(&model);
view1.setRootIndex(model.index(-1, 0));
view1.setRootIsDecorated(false); // Hide expand/collapse ikon
view1.setSelectionBehavior(QAbstractItemView::SelectRows);
view1.setSelectionMode(QAbstractItemView::MultiSelection);
// Create QListView
QTableView view2;
view2.setModel(&model);
view2.setRootIndex(model.index(-1, 0));
view2.setSelectionBehavior(QAbstractItemView::SelectRows);
view2.setSelectionMode(QAbstractItemView::MultiSelection);
layout.addWidget(&view1);
layout.addWidget(&view2);
mainWidget.show();
return app.exec();
}

Идеальное целевое решение:

Поскольку я не полный профессионал, мне довольно сложно определить, какой объект лучше всего подходит для достижения цели. Кажется, что ни один объект (QTreeView, QListView, QTableView) не является правильным, и мне нужно создать совершенно новое пользовательское представление.
- QTreeView в первую очередь создан для дерева структура, поэтому мне нужно удалить все элементы дерева
- QTableView в первую очередь создан для работы с ячейками, поэтому мне нужно перестроить его из ячеек в строки
- QListView использует только один столбец, поэтому мне нужно реализовать функцию нескольких столбцов.
Можете ли вы посоветовать мне, как это сделать?
Подробнее здесь: https://stackoverflow.com/questions/787 ... e-explorer