Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Загрузка графического файла
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt Система рисования. Печать
zuze
Я хочу чтобы по нажатию кнопки появлялась картинка из графического файла с расширением *.png

Для этого я сделал:
1. Проект GUI
2. На окно программы поставил pushButton и graphicsView
3. В заголовочный файл (*.h) добавил
public slots:
    void LoadPicture();

4. А в файле с описанием (*.cpp) добавил
void locatordialog::LoadPicture()
{
    QPixmap Image_Monitor1("monitor1.png");
    ui->graphicsView->setBackgroundBrush(QBrush(Image_Monitor1));
}

void locatordialog::on_pushButton_clicked()
{
    connect(ui->pushButton, SIGNAL(clicked()), this, SLOT(LoadPicture()));
}

5. Файл с картинкой положил туда, где исполняемый файл.

Компилятор ошибок не обнаружил, но почему-то после нажатия на кнопку картинка не появляется. Что я сделал не так?
RazrFalcon
Вместо QGraphicsView лучше использовать QLabel.

void locatordialog::LoadPicture()
{
    QPixmap Image_Monitor1("monitor1.png");
    ui->lbl->setPixmap(Image_Monitor1);
}


PS: для ресайза есть scaled
Litkevich Yuriy
Цитата(zuze @ 6.11.2012, 21:43) *
void locatordialog::LoadPicture()
{
    QPixmap Image_Monitor1("monitor1.png"); // Создали локальный (внутри функции, объект
    ui->graphicsView->setBackgroundBrush(QBrush(Image_Monitor1)); // пользуемся объектом
}// Функция кончилась, локальный объект из памяти удалён, пользоваться больше нечем.

zuze
Вопрос закрыт. По совету "RazrFalcon" я использовал QLabel и всё получилось.

В заголовочный файл (*.h) добавил

public slots:
    void LoadPicture();



А в файле с описанием (*.cpp) добавил в конструктор

connect(ui->pushButton, SIGNAL(clicked()), this, SLOT(LoadPicture()));


А также описал функцию LoadPicture()

void locatordialog::LoadPicture()
{
    QPixmap ImageMonitor1(QApplication::applicationDirPath() + "/monitor1.png");
    ui->label->setPixmap(ImageMonitor1);
}
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.