У меня есть приложение на Qt 4.8.5.Виджет верхнего уровня получен из QMainWindow.Центральный виджет (QMainWindow :: setCentralWidget) является производным от QTableView.Модель данных для представления получена из QAbstractTableModel.
Модель данных динамически изменяется в течение всего жизненного цикла приложения без вмешательства человека.Графический интерфейс приложения просматривается на стене в диспетчерской для просмотра несколькими людьми, и, как правило, никто не взаимодействует с графическим интерфейсом напрямую.
Изменения в модели данных являются существенными, включая строки и столбцы динамической таблицы.Размер окна приложения должен соответствовать размеру QTableView каждый раз, когда вызывается QTableView :: setModel для установки новой модели данных, так что сохраняется минимальная площадь.Поведение «из коробки» позволяет окну принимать исходный размер, который не изменится при введении новой модели данных.Все мои различные попытки запрограммировать динамически растущее и уменьшающееся окно не увенчались успехом.
Дополнительная информация ... Это не новое приложение, а то, которое использовалось в течение ряда лет.Техника, которая заставляла это работать, была, действительно, вычислением размера и установкой виджетов фиксированного размера.Я решил вернуться к этому приложению из-за некоторых сценариев, где оценка размера была неправильной.Эти сценарии - не основной сценарий использования приложения, а случаи, когда отдельные пользователи запускали приложение на своих локальных рабочих станциях, а не на стене диспетчерской.
Я решил сосредоточиться на том, почему разные сценарии использования дают разные результаты,изучение нескольких интересных вещей.На точность расчета размеров повлияло то, откуда было выполнено приложение.Прямой вход в рабочую станцию Linux всегда работал.Сбои были связаны с удаленным входом в систему: windows-> putty / превышает, Linux 'ssh';все зависит от архитектуры удаленного хоста.
Оказывается, стиль QI, используемый Qt, влияет на точность моей оценки размера.Поскольку приложение явно не устанавливало стиль, используемый стиль варьировался в сценариях, упомянутых выше.Неточность оценки размера была решена путем выбора явного стиля в коде приложения.