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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Ресайз высоты строчки по нажатию кнопки  (Прочитано 6307 раз)
carhun
Гость
« : Август 04, 2012, 13:08 »

Добрый день.

У меня есть TreeView, в к-м будем считать условно есть 2 колонки. первая колонка, собсвтвенно, кнопка, 2я колонка - пусть будет QLineEdit...

Соотв при нажатии на кнопку хочу сделать, что бы QLineEdit увеличивал свои размеры....

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

Код:
collapse(index.parent());
expand(index.parent());

Да оно так работает, но это криво да и работает не всегда правильно. Например, если у меня много строчек и они не помещаются на эран все, и я скролю допустим до самой посл, то когда я нажму на кнопку, то оно меня перенесет в самый верх TreeView, правда при этом все равно отресайзит ту строчку где я нажал. Но хотелось бы, что бы оно не перескакивало в самый вверх...

Надеюсь вы мне поможете.

С уважением,
 carhun
Записан
Bepec
Гость
« Ответ #1 : Август 05, 2012, 22:49 »

Проблема не осознал - у меня почти 12 ночи Улыбающийся

Но проблема у тебя в обновлении - у тебя явно где то update вызывается, он и отбрасывает на 1 строчку.
Записан
carhun
Гость
« Ответ #2 : Август 06, 2012, 10:38 »

update используется где-то внутри collapse или expand...

просто надо как бы отказаться от вызова этих ф-ий, пробывал на прямую вызывать update, так оно тогда ничего не обновляет...
Записан
Bepec
Гость
« Ответ #3 : Август 06, 2012, 10:46 »

Телепаты  на мальдивах, а я кода не вижу Улыбающийся
Записан
carhun
Гость
« Ответ #4 : Август 06, 2012, 11:36 »

Код:
QPushButton *btn = (QPushButton *)sender();
QModelIndex i = btns[btn];

QLineEdit *le = (QLineEdit *)indexWidget(i);

le->setFixedHeight(150);

//updateGeometries();
update(i);

//    collapse(i.parent());
//    expand(i.parent());

Вот пробую делать так, и геометрия не обновляется, обновляется только когда я закрываю/открываю ....
Записан
Bepec
Гость
« Ответ #5 : Август 06, 2012, 11:53 »

Позвольте спросить, а ху из дыс btns и где эта конструкция находится? В каком классе. А класс от кого и где?
Записан
carhun
Гость
« Ответ #6 : Август 06, 2012, 12:06 »

в классе MyTreeView : public QTreeView {
....

QMap<QPushButton*, QModelIndex> btns;
....
}

другого способа как связать кнопку и индекс, к-ый ей соотв. я не нашел, может подскажете тоже, как лучше...
Записан
Bepec
Гость
« Ответ #7 : Август 06, 2012, 12:07 »

Мдам. Я боюсь спросить, а как вы кнопочку отрисовываете?
Записан
carhun
Гость
« Ответ #8 : Август 06, 2012, 12:10 »

Вот так:

...
QPushButton *btn = new QPushButton();
....
setIndexWidget(index, btn);
Записан
Bepec
Гость
« Ответ #9 : Август 06, 2012, 12:12 »

А вы не думали использовать делегатик?  

PS где то тут делегатобот обретается.

PPS судя по всему вы очень далеки от моей логики программирования. Если вы выложите тестовый проект, с которым я смогу поразбираться - я возможно решу вашу проблема. Если нет, то умываю руки.
Записан
carhun
Гость
« Ответ #10 : Август 06, 2012, 12:27 »

сейчас сделаю тестовый проект, через 10 мин скину.

Вот собственно, пусть будет вот так.
Если такой вариант как я пытюась сделать - это вообще полный бред, то посоветуйте как лучше , просто опыта нету и я не знаю, что есть хорошо делать, что плохо.. Желательно с кодом, я понимаю, что так хорошо, но в делигате у меня например не получилось отрисовать кнопку, наложить на нее картинку и сделать ее нажимаемой и обрабатывать результат соотвественно... получилось только ее отрисовать.

« Последнее редактирование: Август 06, 2012, 12:43 от carhun » Записан
Bepec
Гость
« Ответ #11 : Август 10, 2012, 08:36 »

Кхм. Пусть и с запозданием посмотрел - ничего не понял. Пустая модель с пустыми данными, lineEdit'ов нету. Детей нету. Что смотреть?
Записан
carhun
Гость
« Ответ #12 : Август 10, 2012, 11:33 »

Смотреть на то что происходит при нажатии на кнопку в первой колонке, почему происходит не правильный ресайз и как его вообще правильно делать?
Записан
Bepec
Гость
« Ответ #13 : Август 10, 2012, 12:11 »

Ну, ресайза у тебя не происходит Веселый Почему? Потому что ты ресайзишь виджет внутри ячейки. А значения ячейки остаются неизменёнными.

PS чтоб ты не паниковал добавляю - смотрю и пытаюсь сделать чо неть Улыбающийся

PPS и не обманывай больше. Комбобоксы вместо лайнэдитов это плохо!!!
« Последнее редактирование: Август 10, 2012, 12:21 от Bepec » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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