Форум программистов, компьютерный форум, киберфорум
C++ Qt
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1

Пара вопросов

01.11.2011, 02:31. Показов 1130. Ответов 6

Студворк — интернет-сервис помощи студентам
1. Работа с несколькими формами. Интересует принцип. Например нужно по кнопочке показывать 2-ю форму. Вопрос - создавать новую форму в обработчике кнопки и показывать её или в основной форме держать указатель на дочернюю форму и в обработчике кнопки лишь вызывать show для дочерней формы?

1.1 Аналогичный вопрос с QFileDilog.
По нажатию кнопки.
C++
1
2
3
4
5
6
7
8
9
void MainWindow::openFile()
{
    this->filename = QFileDialog::getOpenFileName(this, "Открыть файл", QDir::currentPath(), "(*.mc)");
    QFile file(filename);
    file.open(QFile::ReadOnly);
    this->ui->code_editor->setText(file.readAll());
    file.close();
    this->setWindowTitle(QString("QMicroClangTranslator - %1").arg(filename.split('/').last()));
}

Когда вызывается delete для QFileDialog если как я понял при каждом нажатии он создается заново?

2. Имеется контейнер, размеры и содержимое которого меняется по нажатию на кнопку, и нужно отобразить его содержимое в таблице. Недолго думая взял QTableWidget, который по нажатию на кнопку заново создает все ячейки таблицы, на 99.9 уверен что это приводит к утечке памяти Что посоветуете? Рассматривал вариант QTableView, но он уж слишком мудреным показался, или в нём можно сделать чтобы обновление таблицы происходило по сигналу и он автоматически создавал/удалял ячейки?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
01.11.2011, 02:31
Ответы с готовыми решениями:

Пара вопросов
Здравствуйте! Не могли бы вы сказать мне: 1)Как програмно избавится от верхней части окна? 2)Какое событие должна описывать процедура,...

Пара вопросов
Добрий вечер форум! У меня пара вопросов: 1. Как сделать так чтоби форма ушла под другими окнами? 2. Как заставит форму изчезнуть из...

Пара вопросов
Есть форма с несколькими кнопками и др элементами. 1) Как сделать вывод текущего системного времени на форму, чтобы оно тикало, а не...

6
 Аватар для oxotnik
1665 / 1134 / 80
Регистрация: 21.08.2008
Сообщений: 4,734
Записей в блоге: 1
01.11.2011, 09:09
Цитата Сообщение от Jupiter Посмотреть сообщение
Вопрос - создавать новую форму в обработчике кнопки и показывать её или в основной форме держать указатель на дочернюю форму и в обработчике кнопки лишь вызывать show для дочерней формы?
так только модально показывать...

Цитата Сообщение от Jupiter Посмотреть сообщение
1.1 Аналогичный вопрос с QFileDilog.
пофигу где создавать - показывается модально

Цитата Сообщение от Jupiter Посмотреть сообщение
Имеется контейнер, размеры и содержимое которого меняется по нажатию на кнопку, и нужно отобразить его содержимое в таблице. Недолго думая взял QTableWidget, который по нажатию на кнопку заново создает все ячейки таблицы, на 99.9 уверен что это приводит к утечке памяти Что посоветуете? Рассматривал вариант QTableView, но он уж слишком мудреным показался, или в нём можно сделать чтобы обновление таблицы происходило по сигналу и он автоматически создавал/удалял ячейки?
есть такое понятие Model/View в кратце создаешь свою модель, ставишь у таблицы ее setModel и по изменению данных модели это все отображается в таблице.
1
инженер-системотехник
 Аватар для Haster
111 / 111 / 5
Регистрация: 10.03.2009
Сообщений: 533
01.11.2011, 09:19
По поводу п.1, то мне кажется не принципиально, если форма не особо навороченная, то можно и каждый раз создавать, чтобы не держать лишний указатель, ну а если форма "тяжелая" и не хочется ждать ее загрузки, то можно и заранее создать.

по пункту 1.1, то тут используется статический метод QFileDialog::getOpenFileName, т.е. объект при этом не создается и не уничтожается (к слову статический метод в данном случае ведет себя как обычная функция)

по п.2 точно не знаю чем помочь,QTableView тоже не пробовал - ибо с источниками данных заморачиваться не хотел (да и не было такой задачи). А вот с QTableWidget проблем вроде не возникало. Просто нужно быть внимательнее и анализировать код, вызывающий подозрение ))
Как вариант повставлять логи в деструкторы и посмотреть, для всех ли объектов они вызываются
1
Автор FAQ
 Аватар для Чистый
2733 / 1429 / 89
Регистрация: 08.09.2011
Сообщений: 3,746
Записей в блоге: 1
01.11.2011, 10:18
Цитата Сообщение от Jupiter Посмотреть сообщение
2. Имеется контейнер, размеры и содержимое которого меняется по нажатию на кнопку, и нужно отобразить его содержимое в таблице. Недолго думая взял QTableWidget, который по нажатию на кнопку заново создает все ячейки таблицы, на 99.9 уверен что это приводит к утечке памяти Что посоветуете? Рассматривал вариант QTableView, но он уж слишком мудреным показался, или в нём можно сделать чтобы обновление таблицы происходило по сигналу и он автоматически создавал/удалял ячейки?
ты все же думаешь что удаляя и создавая ячейки получаешь утечку памяти ?
1
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
01.11.2011, 13:44  [ТС]
Цитата Сообщение от Чистый Посмотреть сообщение
ты все же думаешь что удаляя и создавая ячейки получаешь утечку памяти ?
я вызываю clear() для QTableWidget и создаю все ячейки заново
C++
1
void QTableWidget::clear () //[slot]
Removes all items in the view. This will also remove all selections. The table dimensions stay the same.
0
инженер-системотехник
 Аватар для Haster
111 / 111 / 5
Регистрация: 10.03.2009
Сообщений: 533
01.11.2011, 15:05
Jupiter, я думаю, что при этом вызываются деструкторы элементов ячеек, так что этот метод имеет право жить ))
0
Автор FAQ
 Аватар для Чистый
2733 / 1429 / 89
Регистрация: 08.09.2011
Сообщений: 3,746
Записей в блоге: 1
01.11.2011, 15:18
попробуй например вот это:
C++
1
QTableWidget::removeCellWidget
чисто для сравнения...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
01.11.2011, 15:18
Помогаю со студенческими работами здесь

Пара вопросов
Поставил Хамрр вроде все норм работает....потом поставил MySQLAdmin указал айпи сервера 127,0,0,1 пользователь root пароль оставил пустым и...

пара вопросов
1 Как из модуля mdb выбрать данные из таблицы содержащейся в этой же БД? До этого работал с access только, как с внешним ИД, используя ADO,...

Пара вопросов
1. Присутствует значительный объём кода в General Declarations перед объявлением переменных (всякие там библиотеки и т.д.), который должен...

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

ОУ. Пара вопросов
Доброго времени суток! Никак не могу уяснить для себя несколько моментов из роботы ОУ (Хоровица чтил, гугл чтил. не доходит, видимо,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка SDL3 из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru