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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QTree, фиксированная ширина конкретной колонки  (Прочитано 6117 раз)
wertklop
Гость
« : Апрель 29, 2011, 12:48 »

Имеется QTreeWidget, который заполнен какими то данными. В 1й колонке расположено само дерево, во 2й я хочу вставлять иконку(для статуса элемента дерева). Если я изменяю размеры виджета по ширине(не программно), то у меня ширина 1й колонки не изменяется, а ширина 2й изменяется в соответствии с шириной самого виджета. как сделать так, чтобы 2я колонка всегда была к примеру 10 px, а вот 1я - расширялась?

Код:
QTreeWidget*tree = new QTreeWidget();
tree->setStyle(QStyleFactory::create("windows"));
tree->setHeaderHidden(true);
tree->setColumnCount(2);
QTreeWidgetItem*treeItemMain = new QTreeWidgetItem(tree);
treeItemMain->setText(0, QString::fromUtf8("Дерево приложения"));
treeItemMain->setText(1, QString::fromUtf8("Тип ветки"));
treeItemMain->setText(2, QString::fromUtf8("Флаг подчинённости"));
tree->setColumnWidth(0,200);
tree->setColumnHidden(1,true);
tree->setColumnWidth(2,10);
Записан
SeverusSnape
Гость
« Ответ #1 : Апрель 29, 2011, 12:50 »

ResizeMode
 флаг QHeaderView::Fixed
Записан
wertklop
Гость
« Ответ #2 : Апрель 29, 2011, 13:04 »

ResizeMode
 флаг QHeaderView::Fixed
подскажи, пожалуйста, куда его вставить, я что то запутался в манах
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #3 : Апрель 29, 2011, 13:20 »

tree->header()->setResizeMode( QHeaderView::Fixed );
Записан

Qt 5.11/4.8.7 (X11/Win)
wertklop
Гость
« Ответ #4 : Апрель 29, 2011, 13:25 »

не, что то не оч получается, если расширять на всё окно, то после определённой ширины, 2я колонка всё равно расширяется, может это потому что в QApplication находится qdockWidget, а в нём QTreeWidget?
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #5 : Апрель 29, 2011, 13:31 »

Цитировать
может это потому что в QApplication находится qdockWidget, а в нём QTreeWidget?
где-где  Непонимающий
Записан

Qt 5.11/4.8.7 (X11/Win)
SeverusSnape
Гость
« Ответ #6 : Апрель 29, 2011, 14:00 »

покажите свойства для QTreeWidget в своем приложении
Записан
SeverusSnape
Гость
« Ответ #7 : Апрель 29, 2011, 14:02 »

и попробуйте вот так

ui->treeWidget->header()->resizeSection(0, 230); // номер колонки, ширина в пикселях
ui->treeWidget->header()->setResizeMode( QHeaderView::Fixed );
Записан
wertklop
Гость
« Ответ #8 : Апрель 29, 2011, 14:18 »

покажите свойства для QTreeWidget в своем приложении
каким образом???я не через креатор делаю. весь код объявления и настроек я указал выше, всё остальное по умолчанию
Записан
SeverusSnape
Гость
« Ответ #9 : Апрель 29, 2011, 15:00 »

понял, моя ошибка...

а что с примером из моего ответа #7.

Для меня работает все отлично
Записан
wertklop
Гость
« Ответ #10 : Апрель 29, 2011, 15:20 »

понял, моя ошибка...

а что с примером из моего ответа #7.

Для меня работает все отлично
см ответ №4, первую половину
Записан
SeverusSnape
Гость
« Ответ #11 : Апрель 29, 2011, 15:25 »

Мы занимаемся тыканием пальцем в небо - как насчет setStretchLastSection(false);
Записан
wertklop
Гость
« Ответ #12 : Апрель 29, 2011, 15:37 »

стало вообще ещё более непонятно
это если расширять. видно, что последние 2 колонки остаются, на месте, хоть не изменяются в размере, а надо чтобы при расширении они не изменяясь в размере были привязаны к правой границе формы, а вот 1я колонки расширялась
« Последнее редактирование: Апрель 29, 2011, 15:39 от wertklop » Записан
wertklop
Гость
« Ответ #13 : Апрель 29, 2011, 15:44 »

вот я так и знал, что проблема где то в последовательности кода..................
работает так:

Код:
    QTreeWidget*tree = new QTreeWidget();
    tree->setStyle(QStyleFactory::create("windows"));
    tree->setHeaderHidden(true);
    tree->setColumnCount(2);
    tree->header()->setResizeMode(0, QHeaderView::Stretch);
    tree->header()->setStretchLastSection(false);
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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