Russian Qt Forum
Ноябрь 23, 2024, 00:00 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QTreeView как сделать чтобы текст был по середине Widgeta  (Прочитано 4980 раз)
rik_mik_2raza
Новичок

Offline Offline

Сообщений: 6


Просмотр профиля
« : Апрель 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 изменяется на ноль, Подскажите как сделать правильно?
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.078 секунд. Запросов: 23.