![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
fortero |
![]()
Сообщение
#1
|
Участник ![]() ![]() Группа: Участник Сообщений: 132 Регистрация: 4.12.2010 Пользователь №: 2242 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Доброй ночи!
Имеется MDI дочернии окна, внутри есть необходимость установить виджет таблице QTableWidget, устанавливается благополучно, а как мне сделать, что бы таблица равномерно увеличивалась при увиличении окна, а то она статична в размере, дочерне окно я увеличил немного или до максимума а размер виджета таблицы остался прежний... Спасибо за внимание! |
|
|
![]() |
silver47 |
![]()
Сообщение
#2
|
Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 356 Регистрация: 1.4.2010 Пользователь №: 1584 Спасибо сказали: 40 раз(а) Репутация: ![]() ![]() ![]() |
Немного не понял. Имеется окно с QTableWidget, в одной из ячеек которой стоит другой виджет. При изменении размеров окна, размер таблицы меняется, а размер ячейки с виджетом нет?
|
|
|
igor_bogomolov |
![]()
Сообщение
#3
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 1215 Регистрация: 22.3.2009 Из: Саратов Пользователь №: 630 Спасибо сказали: 235 раз(а) Репутация: ![]() ![]() ![]() |
Используй компоновщики
|
|
|
fortero |
![]()
Сообщение
#4
|
Участник ![]() ![]() Группа: Участник Сообщений: 132 Регистрация: 4.12.2010 Пользователь №: 2242 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Есть окно к примеру хоть класса QMainWindow и в нём нужно построить таблицу при помощи класса QTableWidget, всё получается но размер таблицы не увеличевается с размером окна, она фиксированного размера почему то...
А как припомощи компоновщика правельно задать параметры когда 1 виджет, что бы он занимал всё пространство окна и динамически увеличевался при увиличение окна? |
|
|
silver47 |
![]()
Сообщение
#5
|
Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 356 Регистрация: 1.4.2010 Пользователь №: 1584 Спасибо сказали: 40 раз(а) Репутация: ![]() ![]() ![]() |
В приведенном ниже примере установлю QTableWidget на виджет:
А так для экземпляра QMainWindow:
|
|
|
fortero |
![]()
Сообщение
#6
|
Участник ![]() ![]() Группа: Участник Сообщений: 132 Регистрация: 4.12.2010 Пользователь №: 2242 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
В приведенном ниже примере установлю QTableWidget на виджет:
А так для экземпляра QMainWindow:
Спасибо помогла с Layout! А подскажите ещё пожалуйста, а как быть когда начинаешь окно растягивать увеличевать, как сделать что юы при увеличении геометрии окна таблица внутри окна тоже увеличивалась? Спасибо за внимание... |
|
|
silver47 |
![]()
Сообщение
#7
|
Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 356 Регистрация: 1.4.2010 Пользователь №: 1584 Спасибо сказали: 40 раз(а) Репутация: ![]() ![]() ![]() |
Не понимаю я Вас. Как это помогло но не работает
![]() 1 Создаем Layout и засовываем в него таблицу. (рис1) 2 При изменении размеров окна, размер таблицы меняется, размер ячеек же остается постоянным!!!! (рис2) 3 Можно растянуть последний столбец, чтобы он занимал все оставшееся место (рис3), но это некрасиво. Логичным является изменение размера ячеек в зависимости от размеров таблицы. По моему уровню знаний, это сделать сложнее, потому что нужно каким-то образом узнать что размеры таблицы изменились. Кроме как делать свой класс, унаследованный от QTableWidget. Может знающие люди чего посоветуют. Обещанный код:
Эскизы прикрепленных изображений
Прикрепленные файлы
|
|
|
ernie |
![]()
Сообщение
#8
|
![]() Участник ![]() ![]() Группа: Участник Сообщений: 130 Регистрация: 13.5.2010 Из: Irkutsk Пользователь №: 1712 Спасибо сказали: 11 раз(а) Репутация: ![]() ![]() ![]() |
Можно использовать setRowHeight и setColumnWidth при изменении размера, т.е. скажем setRowHeight(tableHeight/rowCount),где tableHeight - общая высота таблицы,так же и с шириной
|
|
|
silver47 |
![]()
Сообщение
#9
|
Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 356 Регистрация: 1.4.2010 Пользователь №: 1584 Спасибо сказали: 40 раз(а) Репутация: ![]() ![]() ![]() |
Можно использовать setRowHeight и setColumnWidth при изменении размера, т.е. скажем setRowHeight(tableHeight/rowCount),где tableHeight - общая высота таблицы,так же и с шириной Блин, А кто спорит то? Логичным является изменение размера ячеек в зависимости от размеров таблицы. Вы знаете как: нужно каким-то образом узнать что размеры таблицы изменились. ?ПыСы: т.е. скажем setRowHeight(tableHeight/rowCount) А если записей в таблице стотышьмилионов, что тогда увидим? Сообщение отредактировал silver47 - 28.4.2011, 8:11 |
|
|
ernie |
![]()
Сообщение
#10
|
![]() Участник ![]() ![]() Группа: Участник Сообщений: 130 Регистрация: 13.5.2010 Из: Irkutsk Пользователь №: 1712 Спасибо сказали: 11 раз(а) Репутация: ![]() ![]() ![]() |
silver47,ну да,с высотой ячеек я погорячился что-то
![]() По поводу как узнать,что размеры таблицы изменились,resizeEvent чем плох? |
|
|
silver47 |
![]()
Сообщение
#11
|
Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 356 Регистрация: 1.4.2010 Пользователь №: 1584 Спасибо сказали: 40 раз(а) Репутация: ![]() ![]() ![]() |
ну дык, опишите для страждующих
|
|
|
fortero |
![]()
Сообщение
#12
|
Участник ![]() ![]() Группа: Участник Сообщений: 132 Регистрация: 4.12.2010 Пользователь №: 2242 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Нужно Господа!
Что бы была точка отсчёта, есть окно и есть таблица, базовый размер задан! Высоту строк увеличевать как раз напротив не нужно, а вот ширену столбцов, в ней и загвоздка... Базовый пример: Как вы видите это окно внутри окна, вдруг его прейдётся увеличить, хотелось бы что бы и таблица по ширине не по высоте, увеличилась, или на худой конец только вторая колонка только по ширине увеличилась... И ещё если вы заметили серую полоску от фона окна наехавшую на таблицу, не подскажите как это вылечить? Если кликнуть то серость проподает, но при появлении первого окна серая линия несколько смущает((( |
|
|
silver47 |
![]()
Сообщение
#13
|
Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 356 Регистрация: 1.4.2010 Пользователь №: 1584 Спасибо сказали: 40 раз(а) Репутация: ![]() ![]() ![]() |
Я ничего кроме как создавать свой класс, унаследовав его от QTableWidget и в нем переопределять resizeEvent, чтобы он испускал сигнал изменения размера, или сам менял размеры ячеек, посоветовать не могу. Господин ernie не желает делиться секретом
![]() ![]() Есть свое представление, унаследованное от QTableView. Там как раз переопределен resizeEvent могу выложить.... может по аналогии сделаете. заголовочник:
реализация:
Сообщение отредактировал silver47 - 29.4.2011, 10:33 |
|
|
wiz29 |
![]()
Сообщение
#14
|
![]() Старейший участник ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 600 Регистрация: 7.7.2010 Из: Санкт-Петербург Пользователь №: 1866 Спасибо сказали: 94 раз(а) Репутация: ![]() ![]() ![]() |
Я ничего кроме как создавать свой класс, унаследовав его от QTableWidget и в нем переопределять resizeEvent, чтобы он испускал сигнал изменения размера, или сам менял размеры ячеек, посоветовать не могу. Господин ernie не желает делиться секретом ![]() ![]() Можно использовать eventFilter для обработки, если нет желания наследоваться. |
|
|
Litkevich Yuriy |
![]()
Сообщение
#15
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
fortero |
![]()
Сообщение
#16
|
Участник ![]() ![]() Группа: Участник Сообщений: 132 Регистрация: 4.12.2010 Пользователь №: 2242 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
Litkevich Yuriy |
![]()
Сообщение
#17
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
fortero, как делал субокно? В коде, в дизайнере?
|
|
|
fortero |
![]()
Сообщение
#18
|
Участник ![]() ![]() Группа: Участник Сообщений: 132 Регистрация: 4.12.2010 Пользователь №: 2242 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
silver47 |
![]()
Сообщение
#19
|
Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 356 Регистрация: 1.4.2010 Пользователь №: 1584 Спасибо сказали: 40 раз(а) Репутация: ![]() ![]() ![]() |
Мне казалось этот вопрос решили еще тут
|
|
|
Litkevich Yuriy |
![]()
Сообщение
#20
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
У меня всё в коде показывай код контсруктора субокна.П.С. до секретов ещё ой как далеко, так что выкладывай в форум. П.П.С. весь код приложения не интересен и будет лишь захламлять форум Мне казалось этот вопрос решили еще тут похоже на то
|
|
|
fortero |
![]()
Сообщение
#21
|
Участник ![]() ![]() Группа: Участник Сообщений: 132 Регистрация: 4.12.2010 Пользователь №: 2242 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Добрый день!
Извините, что пропал… Конструктор суб окна? second.h
Я согласен, что секретов нет, да их быть не может просто над кодом работаю я не один, и я не знаю как другие отреагируют… А вы не могли показать примеры как в Layout упровлять таблицей, что бы Layout автоматом её растягивал??? Вопрос действительно решился с той задачей, так как мне больше 2 колонок не надо… Но очень скоро понадобится строить таблицы где минимум 5 будет и хотелось решить проблему с автоматическим растягиванием. Буду очень признателен, спасибо за внимание! |
|
|
silver47 |
![]()
Сообщение
#22
|
Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 356 Регистрация: 1.4.2010 Пользователь №: 1584 Спасибо сказали: 40 раз(а) Репутация: ![]() ![]() ![]() |
Ну чего Вы так прицепились к этому компоновщику?! Он свое дело сделал - растянул таблицу по своему размеру, а вот то что таблица не умеет изменять размеры своих столбцов под свой размер - это другое дело, нужно ее научить. Научить можно двумя способами
Как сделать первый вариант я уже писал, применительно к QTableView. Прикрепляю проект с реализацией второго варианта. В нем все та же таблица 5 на 4, в которой столбцы всегда делят размер таблицы в пропорции 10% 25% 25% 40% UPD: Все тот же Макс Шлее страница 283 Сообщение отредактировал silver47 - 1.5.2011, 20:24
Прикрепленные файлы
|
|
|
fortero |
![]()
Сообщение
#23
|
Участник ![]() ![]() Группа: Участник Сообщений: 132 Регистрация: 4.12.2010 Пользователь №: 2242 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Спасибо большое, Вы по настоящему помогли, всё стало таким каким я и представлял себе! Я под редактировал класс который отвечал за таблицу, и всё просто супер!
Извини меня за глупые вопросы я только начинаю, много читаю но всё не усваивается сразу, а вот когда кто то разжуёт сразу всё понятно и наглядно, к примеру мой класс для таблиц, он заниматься будит разными таблицами и у всех будет разное число столбцов я уже решил с этим проблему но главное Вы всё показали наглядно и понятно! Есть ещё вопрос: я заметил у вас присутствие в коде деструктора… Что такое деструктор я имею представление, Шилдта читал, и Страуструпа… Суть в том что бы разрушать объект, это понятно, но в Qt в книжках и в приложениях которые даются в примерах я не замечал а у вас я вижу, объясните как им пользоваться тут он нужен? Для чего вы вписал у себя в коде? Мне эти детали очень важны у меня всегда много вопросов, так как - дело для меня это новое не освоенное! Как говорится в фильме))) Большое спасибо за внимание и помощь! |
|
|
silver47 |
![]()
Сообщение
#24
|
Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 356 Регистрация: 1.4.2010 Пользователь №: 1584 Спасибо сказали: 40 раз(а) Репутация: ![]() ![]() ![]() |
В данной конкретной ситуации деструктор создала сама среда разработки. В нем необходимо уничтожить те объекты, которые были созданы в этом классе, но для которых не установлен родитель. Ну, например, в классе создается указатель на файл, для работы с ним. При уничтожении класса хорошо бы закрыть этот файл и удалить указатель. Или в классе создаете QTextDocument для экспорта какого-либо содержимого в файл odt или PDF. Опять же его следует уничтожить, иначе вероятна утечка памяти. Приведу пример еще нагляднее:
Сообщение отредактировал silver47 - 2.5.2011, 5:57 |
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 21.6.2025, 19:14 |