Михаиллл
June 6, 2019, 6:03 p.m.

QLabel привязать к ScrollBar

ScrollBar, QLabel

Добрый день.
У меня есть QLabel. Я задал QLabel картинку:

  1. border-image: url(:/Images/Images/mapMain.png) 0 0 0 0 stretch stretch;

Этими функциями я меняю размер QLabel:

  1. void MainWindow::on_testButton1_clicked()
  2. {
  3. qDebug()<<ui->labelMap->width()<<ui->labelMap->height();
  4. ui->labelMap->setFixedHeight(ui->labelMap->height()*2);
  5. ui->labelMap->setFixedWidth(ui->labelMap->width()*2);
  6. }
  7.  
  8. void MainWindow::on_testButton2_clicked()
  9. {
  10. qDebug()<<ui->labelMap->width()<<ui->labelMap->height();
  11. ui->labelMap->setFixedHeight(ui->labelMap->height()/2);
  12. ui->labelMap->setFixedWidth(ui->labelMap->width()/2);
  13. }

Как QLabel привязать к ScrollBar, чтобы можно было при увеличенном QLabel менять увеличенный участок с помощью ScrollBar.
Или может быть этого можно добится другим способом?
В перспективе нужно будет делать кнопки поверх QLabel.Может стоит для этого использовать QML?

2

Do you like it? Share on social networks!

6
Evgenii Legotckoi
  • June 6, 2019, 6:11 p.m.

Добрый день!

  1. у QLabel есть метод setPixmap , рекомендую использовать его для установки изображения в QLabel.
  2. посмотрите вот эту статью с QLabel и QScrollBar , возможно, что это то, что нужно для вашей задачи.
    Михаиллл
    • June 6, 2019, 7:36 p.m.

    Сделал так:

    1. ui->labelMap->setText("");
    2. ui->labelMap->setScaledContents(true);
    3. QPixmap bkgnd(":/Images/Images/mapMain.png");
    4. ui->labelMap->setPixmap(bkgnd);
    5.  
    6. ui->horizontalScrollBar->setRange(0, ui->labelMap->width()); //пределы горизонтальной полосы прокрутки
    7. ui->horizontalScrollBar->setValue(ui->labelMap->width()/2); //стартовое значение горизонтальной оси прокрутки
    8. ui->verticalScrollBar->setRange(0, ui->labelMap->height()); //пределы вертикальной полосы прокрутки
    9. ui->verticalScrollBar->setValue(ui->labelMap->height()/2); //стартовое значение вертикальной оси прокрутки

    Но не понял как подключить прокрутку.
    Еще нашел класс ImageViewer . Вы не знаете, как его использовать?

      Evgenii Legotckoi
      • June 6, 2019, 7:39 p.m.

      Так ImageViewer - это не класс библиотеки, это пример, который есть в примерах в Qt Creator.

        Михаиллл
        • June 6, 2019, 7:42 p.m.

        Да. Но помогите пожалуйста понять, как его использовать. Попробовал создать QWidget и заменить его класс на ImageViewer, тут компилятор выдал ошибку.
        Этот пример наверно позволит сделать маштабирование.
        Подскажите пожалуйста, как использовать ImageViewer .

          Михаиллл
          • June 6, 2019, 8:54 p.m.

          Сделал так

          1. QImage mapImage(":/Images/Images/mapMain.png");
          2. ImageViewer* myImageViewer = new ImageViewer();
          3. myImageViewer->setImage(mapImage);

          Но не могу догадаться как добавить в QLabel.

          Может быть вы знаете как привязать ScrollBar в обычному QLabel. В вашем примере я этого не нашел.

            Михаиллл
            • June 6, 2019, 9:51 p.m.
            • The answer was marked as a solution.

            Вот так работает

            1. QImage mapImage(":/Images/Images/mapMain.png");
            2. ImageViewer* myImageViewer = new ImageViewer();
            3. myImageViewer->setImage(mapImage);
            4. ui->verticalLayout->addWidget(myImageViewer);

              Comments

              Only authorized users can post comments.
              Please, Log in or Sign up
              • Last comments
              • Evgenii Legotckoi
                April 16, 2025, 5:08 p.m.
                Благодарю за отзыв. И вам желаю всяческих успехов!
              • IscanderChe
                April 12, 2025, 5:12 p.m.
                Добрый день. Спасибо Вам за этот проект и отдельно за ответы на форуме, которые мне очень помогли в некоммерческих пет-проектах. Профессиональным программистом я так и не стал, но узнал мно…
              • AK
                April 1, 2025, 11:41 a.m.
                Добрый день. В данный момент работаю над проектом, где необходимо выводить звук из программы в определенное аудиоустройство (колонки, наушники, виртуальный кабель и т.д). Пишу на Qt5.12.12 поско…
              • Evgenii Legotckoi
                March 9, 2025, 9:02 p.m.
                К сожалению, я этого подсказать не могу, поскольку у меня нет необходимости в обходе блокировок и т.д. Поэтому я и не задавался решением этой проблемы. Ну выглядит так, что вам действитель…
              • VP
                March 9, 2025, 4:14 p.m.
                Здравствуйте! Я устанавливал Qt6 из исходников а также Qt Creator по отдельности. Все компоненты, связанные с разработкой для Android, установлены. Кроме одного... Когда пытаюсь скомпилиров…