Russian Qt Forum
Ноябрь 24, 2024, 00:56 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Проблема с примером из книжки Шлее  (Прочитано 4626 раз)
bIVEHb
Гость
« : Декабрь 01, 2016, 21:33 »

Начал читать книжку Шлее, в 5 главе есть пример с Виджетом видовой прокрутки.
Пример запускается, но не отображается ни фоновая картинка, ни сами бары прокрутки.
Подскажите пожалуйста, чтоб и фоновая картинка отображалась и бары прокрутки...Спасибо

Сам код
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
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #1 : Декабрь 01, 2016, 21:52 »

Картинка-то есть?
Записан
bIVEHb
Гость
« Ответ #2 : Декабрь 02, 2016, 09:46 »

Картинка-то есть?
Картинка лежит в каталоге примера
« Последнее редактирование: Декабрь 02, 2016, 09:59 от bIVEHb » Записан
Day
Частый гость
***
Offline Offline

Сообщений: 290


Просмотр профиля
« Ответ #3 : Декабрь 02, 2016, 10:29 »

Скорее всего, картинка лежит не в той папке. Точнее, программа запускается не из той папки, в которой лежит картинка. Запускаете из Creator-а? Попробуйте выйти из него и запустить из командной строки, предварительно соединив экзешник и картинку в одной папке.
Записан
bIVEHb
Гость
« Ответ #4 : Декабрь 02, 2016, 12:08 »

Скорее всего, картинка лежит не в той папке. Точнее, программа запускается не из той папки, в которой лежит картинка. Запускаете из Creator-а? Попробуйте выйти из него и запустить из командной строки, предварительно соединив экзешник и картинку в одной папке.
Вы правы оказались, нужно картинку переместить в  новый созданный каталог, у меня он называется build-ScrollArea-Desktop_Qt_5_7_0_MinGW_32bit-Debug и тогда все работает. Большое спасибо!
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #5 : Декабрь 02, 2016, 12:14 »

раньше (во времена книжки Шлее) не практиковалась теневая сборка, собирали всё в том же каталоге где лежат исходники. Поэтому проблем не было.
Записан

Юра.
Day
Частый гость
***
Offline Offline

Сообщений: 290


Просмотр профиля
« Ответ #6 : Декабрь 02, 2016, 13:02 »

Это одна из причин, почему я для сборки не пользуюсь креатором. А просто из командной строки - qmake - make. Оказывается, у Винды комндная строка тоже есть Улыбающийся
И не болит голова, что куда попало, что где лежит, какая директория рабочая и т.п.
За одно, при запуске программы я нахожусь в ситуации более приближенной к компьютеру пользователя. Я имею в виду всякие плагины, которые при работе в креаторе подключаются автоматом. И некоторые проблемы возникают и решаются на более ранней стадии разработки.
Записан
sergek
Гипер активный житель
*****
Offline Offline

Сообщений: 872


Мы должны приносить пользу людям.


Просмотр профиля
« Ответ #7 : Декабрь 02, 2016, 18:19 »

Задавайте в pro-файле DESTDIR   = ./, туда же положите файл.
А лучше создать файл ресурсов, включить туда картинку, в программе использовать путь типа ":/images/img.png".
Записан

Qt 5.13.0 Qt Creator 5.0.1
Win10, Ubuntu 20.04
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #8 : Декабрь 02, 2016, 23:23 »

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

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

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

Юра.
Day
Частый гость
***
Offline Offline

Сообщений: 290


Просмотр профиля
« Ответ #9 : Декабрь 03, 2016, 01:13 »

>>нет не находитесь,
Я же сказал "более приближенной", а не "идентичной" Улыбающийся
>>в нём ничего автоматом не подключается, dll-ки Qt либо доступны в данном окружении (и как следствие qmake), либо нет.
Я имел в виду такие вещи как IMAGEFORMATS. Мне всегда казалось, что из креатора они видны всегда. А чтобы они были видны при запуске из командной строки, необходимо папки плагинов поместить в директорию с экзешником. Почти как у пользователя. Улыбающийся
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.054 секунд. Запросов: 23.