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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Ресайз высоты строчки по нажатию кнопки  (Прочитано 6586 раз)
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.023 секунд. Запросов: 18.