QPixmap не показывает мою картинку

Я пытаюсь отобразить изображение на QLabel с помощью QPixmap, но изображение не отображается. Кто-нибудь может мне помочь?

onglets = new QTabWidget(this);    //création des onglets
page1 = new QWidget;  //création de la page 1
page2 = new QLabel; //création de la page 2

page1->setLayout(layoutPrincipal); //insere le layoutprincipale dans la page 1
page2->setPixmap(QPixmap("1.png"));
page2->setText("Alpha version 1.0");
onglets->addTab(page1, "Creation de compte"); //ajoute la page 1 dans les onglets
onglets->addTab(page2, "A propos");

person Dan Snow    schedule 16.07.2013    source источник
comment
Я могу ошибаться, но я думаю, что это происходит потому, что QLabel не может иметь одновременно текст и растровое изображение.   -  person LLLL    schedule 16.07.2013
comment
я пытаюсь без текста, но он все равно не хочет показывать картинку.   -  person Dan Snow    schedule 16.07.2013


Ответы (1)


Проблема в строках:

page2->setPixmap(QPixmap("1.png"));
page2->setText("Alpha version 1.0");

QLabel не может иметь опции как для текста, так и для растрового изображения, поэтому, когда вы устанавливаете текст, QPixmap удаляется. Чтобы избежать этого, вы можете создать новый QWidget для второй вкладки вашего QTabWidget, добавить туда 2 QLabels, один из которых имеет текст, а второй - растровое изображение.

ОБНОВЛЕНИЕ: если после удаления page2->setText("Alpha version 1.0"); QPixmap по-прежнему нет, попробуйте выяснить, существует ли вообще файл "1.png". Попробуйте это, чтобы определить, существует ли файл и находится ли он там, где вы ожидаете.

qDebug()<<"File exists -"<<QFileInfo("1.png").exists()<<" "<<QFileInfo("1.png").absoluteFilePath();

ОБНОВЛЕНИЕ2:

Когда вы запускаете его из QtCreator (компилируете), ваш файл должен находиться в каталоге вашего проекта (рядом с файлом *.pro), когда вы запускаете его из исполняемого файла, он должен быть рядом с ним, если вы вызываете его как "1.png" . Кстати, если вы поменяете свой currentWorkingDirectory - то возникнут следующие проблемы. Решение состоит в том, чтобы добавить файл qt recource в проект, добавить это изображение в recource и назвать его как QPixmap(:/1.png");. А пока можно найти нужную директорию с QDir::currentPath(), положить туда свой файл.

person Shf    schedule 16.07.2013
comment
спасибо за ответ, но похоже проблема не в этом, я только что удалил этот лайн, но картинка все равно не хочет показываться. - person Dan Snow; 16.07.2013
comment
@DanSnow закомментировал только page2->setText("Alpha version 1.0"); ? Обновленный ответ, кстати. - person Shf; 16.07.2013
comment
да, я говорил об этом lign page2-›setText (Alpha версии 1.0); - person Dan Snow; 16.07.2013
comment
@DanSnow обновил ответ, возможно, растровое изображение находится в неправильном каталоге. - person Shf; 16.07.2013
comment
в какой каталог каталог я должен поместить изображение? Я пробовал почти в каждой папке, но это не работает. (Я использую Qt 5.1.0 и Qt Creator 2.7.2) - person Dan Snow; 16.07.2013
comment
qDebug сказал мне, что файл существует - false C:/Users/allan/Desktop/QT test/sans_titre/build-yo-Desktop_Qt_5_1_0_MinGW_32bit-Debug/1.png, но когда я проверяю папку, я вижу свою картинку (извините за мой плохой английский я француз) - person Dan Snow; 16.07.2013
comment
@DanSnow ожидает файл 1.png в каталоге C:/Users/allan/Desktop/QT test/sans_titre/build-yo-Desktop_Qt_5_1_0_MinGW_32bit-Debug/, но не может его найти, поэтому, если вы поместите его туда, все должно работать - person Shf; 16.07.2013
comment
@DanSnow попробуйте добавить файл ресурсов или добавить изображение в qDebug()<<QDir::currentPath(); - person Shf; 16.07.2013
comment
большое спасибо, вы помогли мне решить мою проблему, на самом деле Qt создал другую папку, в которой он просил мою фотографию, эта папка отличается от того, что я ожидал. Еще раз спасибо :) . Знаете ли вы, где я могу найти хороший учебник по созданию файлового ресурса? - person Dan Snow; 16.07.2013
comment
@DanSnow хорошо, рад, что помог вам, вы можете проверить это, например, - doc.qt.digia.com/vs-add-in-1.1.7/ - person Shf; 16.07.2013