Доброй ночи! У меня тут какая-то непонятная ситуация. Например, в методе readMapSettings() в waterBody.setWaterBody(mapName); у меня происходит создание объектов и там очень важно, чтобы до их создания геометрия окна была уже полностью развернута - т.к. там внутри берутся размеры QLabel с QPixmap внутри. И эти размеры должны соответствовать полному окну(т.к. я закрыл приложение с полным окном), а значит открыться оно должно тоже с полным я ведь читаю из QSettings. Но в итоге в параметры объектов почему-то записываются width 100 и height 30, вместо 1004 и 977 соответственно. И уже потом это все дело через всякие эвенты приходит в норму, но с диким оверхедом. Я уже даже showEvent заюзал, чтобы гарантированно получить создание объектов уже после полностью развернутого главного окна. Но этого не происходит, я все равно получаю 100 и 30. Я сперва определяю qpixmap, затем читаю геометрию, потом уже создаю объекты, что еще ему надо??? Может есть возможность как-то дать команду развернуть окно сразу во чтобы то ни стало? На всякий случай указываю, что у меня есть еще один важный перегруженный метод - resizeEvent(). Он используется для сохранения пропорций после scaleContents QLabel. Но влиять на проблему вроде не должен.
void MainWindow::readMapSettings() {
QSettings settings(".//settings.ini", QSettings::IniFormat);
settings.beginGroup("MAPS");
const QString mapName = settings.value("map", "MosquitoLake").toString();
settings.endGroup();
if(mapName == "CottagePond") {
ui->labelImageMap->setPixmap(QPixmap(".//maps/Hootorez_CottagePond.jpg"));
waterBody.setLabelImageMapPtr(ui->labelImageMap);
readDisplaySettings();
waterBody.setWaterBody(mapName);
writeMapSettings(mapName);
}
}
void MainWindow::showEvent(QShowEvent *event) {
QMainWindow::showEvent(event);
readMapSettings();
}
void MainWindow::resizeEvent(QResizeEvent *event) {
if(!waterBody.getLabelImageMapPtr())
return;
int widthCurrentPixMap = 1;
int heightCurrentPixMap = 1;
const QPixmap* pixPtr = this->ui->labelImageMap->pixmap();
if(pixPtr) {
widthCurrentPixMap = pixPtr->width();
heightCurrentPixMap = pixPtr->height();
}
const QSize pixmapSize(widthCurrentPixMap, heightCurrentPixMap);
ui->labelImageMap->setFixedWidth(
ui->centralWidget->height() * pixmapSize.width() / pixmapSize.height()
);
QMainWindow::resizeEvent(event);
}
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Виртуальный выделенный сервер (VDS) становится отличным выбором
В задании по С++ сказанно отсортирвать массив названий товаров продуктового магазина по алфавиту на русскомС английской сортировкой в Java мне...