Название: QTreeView как сделать чтобы текст был по середине Widgeta Отправлено: rik_mik_2raza от Апреля 13, 2023, 21:49 Доброго времени суток.
Небольшой пример. Код: MainWindow::MainWindow(QWidget *parent) и: QMainWindow(parent) , ui(new Ui::MainWindow) { ui->setupUi(this); QDirModel *model = new QDirModel(this); ui->treeView->setModel(model) ; ui->treeView->setMaximumWidth(200); ui->treeView->hideColumn(1); ui->treeView->hideColumn(2); ui->treeView->hideColumn(3); ui->treeView->hideColumn(4); m_RootIndex = model->index("/home/user"); ui->treeView->setRootIndex(m_RootIndex); connect(ui->treeView, SIGNAL(expanded(const QModelIndex &)), this, SLOT(on_tree_widget_expanded(const QModelIndex &))); connect(ui->treeView, SIGNAL(collapsed(const QModelIndex &)), this, SLOT(on_tree_widget_collapsed(const QModelIndex &))); } ///пройдемся по parent найдем m_RootIndex int MainWindow::depth_branch(const QModelIndex &index) { int ret = 0; QModelIndex in = index; while (in != m_RootIndex) { in = in.parent(); ret++; } return ret; } void MainWindow::on_tree_widget_expanded(const QModelIndex &index) { ui->treeView->resizeColumnToContents(0); int value = ui->treeView->horizontalScrollBar()->value(); qDebug() << value; ui->treeView->horizontalScrollBar()->setValue(value + depth_branch(index)*10); m_value = ui->treeView->horizontalScrollBar()->value(); } void MainWindow::on_tree_widget_collapsed(const QModelIndex &index) { ui->treeView->resizeColumnToContents(0); int value = ui->treeView->horizontalScrollBar()->value(); ui->treeView->horizontalScrollBar()->setValue(value - depth_branch(index)*10); m_value = ui->treeView->horizontalScrollBar()->value(); } Когда user переходит по каталогам (стрелка вправо ) с большой вложенностью размера ширины treeview не хватает чтобы показать имя директории, надо как то заставить горизонтальный scroll подвинуться и сдвинуться обратно когда нажата стрелка вправо (вышли из ветки) Когда переходим по веткам текст current item-а должен быть по середине widgeta пытаюсь в данном примере, управлять горизонтальным scrollbar, но когда пользователь переходит на стрелке вниз значение scrollBar->value изменяется на ноль, Подскажите как сделать правильно? |