Russian Qt Forum

Qt => Вопросы новичков => Тема начата: bIVEHb от Декабрь 01, 2016, 21:33



Название: Проблема с примером из книжки Шлее
Отправлено: bIVEHb от Декабрь 01, 2016, 21:33
Начал читать книжку Шлее, в 5 главе есть пример с Виджетом видовой прокрутки.
Пример запускается, но не отображается ни фоновая картинка, ни сами бары прокрутки.
Подскажите пожалуйста, чтоб и фоновая картинка отображалась и бары прокрутки...Спасибо
(http://s017.radikal.ru/i426/1612/1d/45ea74729122.jpg) (http://radikal.ru)
Сам код
main.cpp
Код:
#include <QtGui>
#include <QtWidgets>

// ----------------------------------------------------------------------
int main(int argc, char** argv)
{
    QApplication app(argc, argv);
    QScrollArea  sa;

    QWidget*     pwgt = new QWidget;
    QPixmap      pix("img.jpg");

    QPalette pal;
    pal.setBrush(pwgt->backgroundRole(), QBrush(pix));
    pwgt->setPalette(pal);
    pwgt->setAutoFillBackground(true);
    pwgt->setFixedSize(pix.width(), pix.height());

    sa.setWidget(pwgt);
    sa.resize(350, 150);
    sa.show();

    return app.exec();
}
Файл проекта
Код:
TEMPLATE	= app
SOURCES = main.cpp
win32:TARGET = ../ScrollArea
QT += widgets


Название: Re: Проблема с примером из книжки Шлее
Отправлено: Авварон от Декабрь 01, 2016, 21:52
Картинка-то есть?


Название: Re: Проблема с примером из книжки Шлее
Отправлено: bIVEHb от Декабрь 02, 2016, 09:46
Картинка-то есть?
Картинка лежит в каталоге примера


Название: Re: Проблема с примером из книжки Шлее
Отправлено: Day от Декабрь 02, 2016, 10:29
Скорее всего, картинка лежит не в той папке. Точнее, программа запускается не из той папки, в которой лежит картинка. Запускаете из Creator-а? Попробуйте выйти из него и запустить из командной строки, предварительно соединив экзешник и картинку в одной папке.


Название: Re: Проблема с примером из книжки Шлее
Отправлено: bIVEHb от Декабрь 02, 2016, 12:08
Скорее всего, картинка лежит не в той папке. Точнее, программа запускается не из той папки, в которой лежит картинка. Запускаете из Creator-а? Попробуйте выйти из него и запустить из командной строки, предварительно соединив экзешник и картинку в одной папке.
Вы правы оказались, нужно картинку переместить в  новый созданный каталог, у меня он называется build-ScrollArea-Desktop_Qt_5_7_0_MinGW_32bit-Debug и тогда все работает. Большое спасибо!


Название: Re: Проблема с примером из книжки Шлее
Отправлено: lit-uriy от Декабрь 02, 2016, 12:14
раньше (во времена книжки Шлее) не практиковалась теневая сборка, собирали всё в том же каталоге где лежат исходники. Поэтому проблем не было.


Название: Re: Проблема с примером из книжки Шлее
Отправлено: Day от Декабрь 02, 2016, 13:02
Это одна из причин, почему я для сборки не пользуюсь креатором. А просто из командной строки - qmake - make. Оказывается, у Винды комндная строка тоже есть :)
И не болит голова, что куда попало, что где лежит, какая директория рабочая и т.п.
За одно, при запуске программы я нахожусь в ситуации более приближенной к компьютеру пользователя. Я имею в виду всякие плагины, которые при работе в креаторе подключаются автоматом. И некоторые проблемы возникают и решаются на более ранней стадии разработки.


Название: Re: Проблема с примером из книжки Шлее
Отправлено: sergek от Декабрь 02, 2016, 18:19
Задавайте в pro-файле DESTDIR   = ./, туда же положите файл.
А лучше создать файл ресурсов, включить туда картинку, в программе использовать путь типа ":/images/img.png".


Название: Re: Проблема с примером из книжки Шлее
Отправлено: lit-uriy от Декабрь 02, 2016, 23:23
>>Это одна из причин, почему я для сборки не пользуюсь креатором.
теневая сборка позволяет не засорять каталог с исходниками разным мусором.
Из командной строки она тоже возможна, достаточно выполнить qmake в целевом каталоге, ну а затем make.

>>при запуске программы я нахожусь в ситуации более приближенной к компьютеру пользователя.
нет не находитесь, достаточно переименовать каталог установки Qt, что бы убедится в этом.

>>Я имею в виду всякие плагины, которые при работе в креаторе подключаются автоматом.
в нём ничего автоматом не подключается, dll-ки Qt либо доступны в данном окружении (и как следствие qmake), либо нет.
Если при сборке из командной строки qmake доступен, то и dll-ки Qt будут доступны.


Название: Re: Проблема с примером из книжки Шлее
Отправлено: Day от Декабрь 03, 2016, 01:13
>>нет не находитесь,
Я же сказал "более приближенной", а не "идентичной" :)
>>в нём ничего автоматом не подключается, dll-ки Qt либо доступны в данном окружении (и как следствие qmake), либо нет.
Я имел в виду такие вещи как IMAGEFORMATS. Мне всегда казалось, что из креатора они видны всегда. А чтобы они были видны при запуске из командной строки, необходимо папки плагинов поместить в директорию с экзешником. Почти как у пользователя. :)