Как открыть изображение в виджете Qt
Я хочу открыть png изображение из файла в виджете. На форуме нашёл как открыть изображение с помощью Qpixmap и QLabel, но изображение открывается отдельным окном, а мне хочется открыть его в виджете. Покопавшись в виджетах, я нашёл "Graphics view", но так и не понял как его использовать.
Я пытался читать документацию, но так и не нашёл там ответа (возможно плохо искал, возможно
не понял из-за своих скудных знаний английского).
Система Mac OS 10.15.3
Использую Qt Creator
Пожалуйста не бейте палками за простой вопрос, ибо я совсем новичок.
Надеюсь на помощь
Как я открываю изображение в окне:
QLabel label;
QPixmap myPixmap( "/Users/justtomu/Documents/test.png" );
label.setPixmap( myPixmap );
label.show();
Ответы (3 шт):
Решил проблему. Может кому-нибудь понадобится. В файле mainwindow.cpp в классе mainwindow нужно добавить
image.load("/Users/justtomu/Documents/test.png");
scene = new QGraphicsScene(this);
scene->addPixmap(image);
scene->setSceneRect(image.rect());
ui->mainImage->setScene(scene);
Решение, конечно, рабочее, но это из танка по воробьям) Потому как сцена и её вьюха - это все-таки инструменты для работы с некоторой, но все же графикой. В этом же случае будет правильней отнаследовать QWidget и переопределить ему paintEvent
class MainWindow : public QMainWindow {
Q_OBJECT
public:
MainWindow(QWidget* parent=nullptr) :QMainWindow(parent) {
centralWidget()->setLayout(new QVBoxLayout());
QLabel* label = new QLabel("");
label->setPixmap(QPixmap("/Users/justtomu/Documents/test.png"));
centralWidget()->layout()->addWidget(label);
}
}
main.cpp:
int main(...) {
QApplication a(...);
MainWindow w;
w.show();
return a.exec();
}
