// Слот - изменение расположения фонового изображения int ScaleSettingsDialog::slotImagePathChanged(QString path) { QFileInfo fileInfo(path); bool isExist = fileInfo.exists(); bool isCorrectSuffix = (fileInfo.suffix() == "svg"); if (isExist && isCorrectSuffix) { lblImageNotification->setText(""); // Получение информации об изображении mImageSize = QSvgRenderer(path).viewBox().size(); lblSourceSizeValue->setText(QString("%1x%2 пкс").arg(mImageSize.width()).arg(mImageSize.height())); lblNewSizeValue->setText(QString("%1x%2 пкс") .arg(mImageSize.width() * spbScale->value() / 100) .arg(mImageSize.height() * spbScale->value() / 100)); // Установка возможности модификации масштаба изображения gbScaleSettings->setEnabled(true); } else { lblImageNotification->setText("<span style='color:red;'>Изображение не найдено!</span>"); gbScaleSettings->setEnabled(false); } if (leImage->focusWidget()) btnApply->setEnabled(true); return 0; }
// Слот - щелчок по кнопке "Обзор" (фоновое изображение) int ScaleSettingsDialog::slotBtnBrowseImageClick() { QFileDialog dialog(this); dialog.setWindowTitle(QString("Выбрать фоновое изображение")); dialog.setDirectory(mProjectDirectory); dialog.setNameFilter(QString("SVG-изображение (*.svg)")); dialog.setLabelText(QFileDialog::Accept, "&Выбрать изображение"); if (dialog.exec() != QDialog::Accepted) return 0; QString dialogResult = dialog.selectedFiles().first(); if (!dialogResult.isEmpty()) { // Установка пути до фонового изображения leImage->setText(dialogResult); // Очистка поля для уведомлений lblImageNotification->setText(""); // Разблокировка кнопки "Применить" btnApply->setEnabled(true); // Установка модификаторов масштаба в 100% spbScale->setValue(100); slScale->setValue(100); // Получение информации об изображении mImageSize = QSvgRenderer(dialogResult).viewBox().size(); lblSourceSizeValue->setText(QString("%1x%2 пкс") .arg(mImageSize.width()) .arg(mImageSize.height())); lblNewSizeValue->setText(QString("%1x%2 пкс") .arg(mImageSize.width() * spbScale->value() / 100) .arg(mImageSize.height() * spbScale->value() / 100)); // Установка возможности модификации масштаба изображения gbScaleSettings->setEnabled(true); } return 0; }
svgItemProperties::svgItemProperties(specSVGItem* i, QWidget* parent) : QDialog(parent), ui(new Ui::svgItemProperties), item(i) { ui->setupUi(this); ui->itemPreview->load(i->data); QSize svgSize = QSvgRenderer(item->data).defaultSize() ; originalAspectRatio = (double) svgSize.width() / svgSize.height() ; svgSize.scale(300, 300, Qt::KeepAspectRatio); ui->itemPreview->setFixedSize(svgSize) ; // ui->itemPreview ui->anchorRadioButtons->setId(ui->topLeftRadio, specSVGItem::topLeft); ui->anchorRadioButtons->setId(ui->topRadio, specSVGItem::top); ui->anchorRadioButtons->setId(ui->topRightRadio, specSVGItem::topRight); ui->anchorRadioButtons->setId(ui->leftRadio, specSVGItem::left); ui->anchorRadioButtons->setId(ui->centerRadio, specSVGItem::center); ui->anchorRadioButtons->setId(ui->rightRadio, specSVGItem::right); ui->anchorRadioButtons->setId(ui->bottomLeftRadio, specSVGItem::bottomLeft); ui->anchorRadioButtons->setId(ui->bottomRadio, specSVGItem::bottom); ui->anchorRadioButtons->setId(ui->bottomRightRadio, specSVGItem::bottomRight); ui->anchorRadioButtons->button(item->anchor)->setChecked(true) ; ui->xValue->setRange(-INFINITY, INFINITY); ui->yValue->setRange(-INFINITY, INFINITY); ui->widthValue->setRange(0, INFINITY); ui->heightValue->setRange(0, INFINITY); ui->xValue->setValue(item->ownBounds.x.second) ; ui->yValue->setValue(item->ownBounds.y.second) ; ui->widthValue->setValue(item->ownBounds.width.second) ; ui->heightValue->setValue(item->ownBounds.height.second) ; ui->xPixelsButton->setChecked(item->ownBounds.x.first != QwtPlot::axisCnt) ; ui->yPixelsButton->setChecked(item->ownBounds.y.first != QwtPlot::axisCnt) ; ui->widthPixelsButton->setChecked(item->ownBounds.width.first != QwtPlot::axisCnt) ; ui->heightPixelsButton->setChecked(item->ownBounds.height.first != QwtPlot::axisCnt) ; }
// Установка пути к изображению int ScaleSettingsDialog::setImage(const QString image, const int scaleFactor) { if (!image.isEmpty()) { QDir currentDir(image); currentDir.makeAbsolute(); mImage = currentDir.path(); } else { mImage = image; } leImage->setText(mImage); if (!QFile(mImage).exists()) { lblImageNotification->setText("<span style='color:red;'>Изображение не найдено!</span>"); gbScaleSettings->setEnabled(false); } else { lblImageNotification->setText(""); // Установка модификаторов масштаба в 100% spbScale->setValue(scaleFactor); slScale->setValue(scaleFactor); // Получение информации об изображении mImageSize = QSvgRenderer(image).viewBox().size(); lblSourceSizeValue->setText(QString("%1x%2 пкс").arg(mImageSize.width()).arg(mImageSize.height())); lblNewSizeValue->setText(QString("%1x%2 пкс") .arg(mImageSize.width() * spbScale->value() / 100) .arg(mImageSize.height() * spbScale->value() / 100)); // Установка возможности модификации масштаба изображения gbScaleSettings->setEnabled(true); } return 0; }