Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Qt] VS не работает вставка картинки как фона 
:(
    Опции темы
yngwie19
Дата 26.6.2009, 23:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 829
Регистрация: 15.6.2008
Где: Новгород

Репутация: нет
Всего: нет



Здравствуйте вот код:
Код

#include <QtGui>

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    QWidget    wgt;

    QWidget *pwgt1 = new QWidget(&wgt);
    QPalette pal1;
    pal1.setColor(pwgt1->backgroundRole(),Qt::blue);
    pwgt1->setPalette(pal1);
    pwgt1->setAutoFillBackground(true);
    pwgt1->resize(100,100);
    pwgt1->move(25,25);

    QWidget *pwgt2 = new QWidget(&wgt);
    QPalette pal2;
    pal2.setBrush(pwgt2->backgroundRole(),QBrush(QPixmap("C:\\stone.jpg")));
    pwgt2->setPalette(pal2);
    pwgt2->resize(100,100);
    pwgt2->move(75,75);
    pwgt2->setAutoFillBackground(true);

    wgt.resize(200,200);
    wgt.show();

    return app.exec();
}


при создании pwgt2, ему задается фон в виде картинки, однако при компиляции в VS 2008 картинка не появляется. А в QtCreator все нормально, в чем дело?
PM MAIL   Вверх
SABROG
Дата 27.6.2009, 00:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 81
Всего: 91



Попробуй проделать тоже самое, но вместо .jpg картинки возьми .png. Если получится, значит дело в том, что не находит плагин qjpeg4.dll. Чтобы понять как сделать так, чтобы его находило читай тут


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
yngwie19
Дата 27.6.2009, 12:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 829
Регистрация: 15.6.2008
Где: Новгород

Репутация: нет
Всего: нет



SABROG, да! с png работает. Однако из этой стать Я так и не понял как сделать чтобы находил плагин qjpeg4.dll. 
PM MAIL   Вверх
SABROG
Дата 27.6.2009, 13:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 81
Всего: 91



Цитата(yngwie19 @ 27.6.2009,  12:11)
SABROG, да! с png работает. Однако из этой стать Я так и не понял как сделать чтобы находил плагин qjpeg4.dll.

Это ж классика smile

http://www.wiki.crossplatform.ru/index.php...0%B2_MS_Windows

Если не хочется ничего лишнего в коде писать, то можно создать папку plugins в папке с программой, создать в ней папку imageformats и скопировать туда нужные .dll файлы (плагины) отсюда: путь_где_стоит_qt\plugins\imageformats\ (вообще структуру путей надо сохранять). Файл qjpegd4.dll для Debug сборки, файл qjpeg4.dll для Release. Если всё-равно не найдет, то создавай файлик qt.config в папке с программой и прописывай в нем это:

Код

[Paths]
Plugins = plugins


Если все-равно не найдется, то можно грохнуть ветку реестра HKEY_CURRENT_USER\Software\Trolltech\OrganizationDefaults , где записываются неудачные попытки загрузки плагинов и программа больше не пытается их загрузить. 

Если опять не поможет, то пересобираем свою программу с консолью добавив ключик:

Код

CONFIG *= console


в .pro файл. И выполнив пересборку: qmake, make

Затем заходим в консоль (cmd), ставим переменную окружения set QT_DEBUG_PLUGINS=1, запускаем командой свою программу.
Если пишется "The plugin плагин.dll' uses incompatible Qt library. (Cannot mix debug and release libraries.)", значит пытаешься загрузить плагин (.dll), который был собран в одном режиме сборки (debug/release), а программа в другом режиме. Если пишет что-то насчет "Thread", например "current thread ... is not the object's thread", значит ты запускаешь программу из консоли, где в переменной PATH указан путь до .dll'ок Qt, при этом они у тебя уже скопированы в папку с твоей программой. В итоге при запуске приложения она цепляет одни .dll'ки, а плагин другие (вернее их же, но с другой папки). А должны оба использовать одну версию, которую загружает программа в момент запуска. 

И последний, мне известный, вариант, когда не работают плагины. Пишет "Cannot mix debug and release libraries", при этом ты уверен, что сторонний плагин компилировал в release или debug режиме и эти режимы совпадают и у плагина и у приложения. Может возникнуть ситуация, когда Qt думает, что плагин собран в другом режиме. На это влияет ключ -DDEBUG и -DRELEASE при сборке. Если при компиляции плагина он явно не указывается, то Qt не может определить в каком режиме он собран.
---
Для статической сборки Qt совсем другая история.

Это сообщение отредактировал(а) SABROG - 27.6.2009, 13:40


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
yngwie19
Дата 27.6.2009, 13:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 829
Регистрация: 15.6.2008
Где: Новгород

Репутация: нет
Всего: нет



SABROG, здесь рассказывается как запускать Qt программы на других компьютерах, а меня программа запускается на этом компе на котором пишу, и к тому же библиотека собрана статически.
PM MAIL   Вверх
SABROG
Дата 27.6.2009, 13:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 81
Всего: 91



Тогда тебе еще и сюда.


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
yngwie19
Дата 27.6.2009, 13:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 829
Регистрация: 15.6.2008
Где: Новгород

Репутация: нет
Всего: нет



SABROG, спасибо буду пробовать.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.1194 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.