Russian Qt Forum

Qt => Общие вопросы => Тема начата: gelonis от Апрель 08, 2010, 21:34



Название: Макс Шлее примеры
Отправлено: gelonis от Апрель 08, 2010, 21:34
Помогите разобраться уже второй пример не могу заставить нормально работать. Пример с изменением курсора
Код:
#include <QtGui>

// ----------------------------------------------------------------------
int main(int argc, char** argv)
{
    QApplication app(argc, argv);
    QWidget      wgt;
    QPixmap      pix("clock.png");
  //  QPixmap pix = QPixmap::fromImage(QImage("clock.png"));
    QCursor      cur(pix);
app.addLibraryPath(app.applicationDirPath() + "/plugins/");
    wgt.setCursor(cur);
    wgt.resize(180, 100);
    wgt.show();

    return app.exec();
}

Запускаю в Qt creator, окно запускается но курсор не меняется.
QCursor: Cannot create bitmap cursor; invalid bitmap(s)

В предыдущем примере та же история.
Код:
pal2.setBrush(pwgt2->backgroundRole(), QBrush(QPixmap("stone.jpg")));
Ошибок правда не выдает, но и фон не показывает.

файлы рисунков находятся в каталогах с исполняемым файлом


Название: Re: Макс Шлее примеры
Отправлено: KuZ от Апрель 08, 2010, 21:56
Скорей все таки не там лежит сам файл или не правильно назвал. все работает нормально.


Название: Re: Макс Шлее примеры
Отправлено: lit-uriy от Апрель 08, 2010, 22:13
gelonis, ты случаем не на линухе?


Название: Re: Макс Шлее примеры
Отправлено: shirushizo от Апрель 09, 2010, 06:12
Если непринципиально, лучше всего создать ресурс и пользовать, тогда и битмапы таскать не придеться.
Если нет, попробуй другие файл подкладывать (для начала *.png), вдруг плагины косячят (imageformats которые)


Название: Re: Макс Шлее примеры
Отправлено: gelonis от Апрель 09, 2010, 08:01
Windows, файлы лежат там где и .exe скопировал туда и плагины \plugins\imageformats\
Код:
app.addLibraryPath(app.applicationDirPath() + "/plugins/");
В первом примере используется jpg во втором png. Верю что  примеры рабочие. помогите и мне запустить. Спасибо!
Кстати пробовал указывать заведомо неправильное имя файла,доп ошибок не показывает это так должно быть?
Создам ресурс, проверю.


Название: Re: Макс Шлее примеры
Отправлено: gelonis от Апрель 09, 2010, 09:10
С ресурсом работают оба примера!!!


Название: Re: Макс Шлее примеры
Отправлено: lit-uriy от Апрель 09, 2010, 16:02
ты проверь, какой файл пытается загрузить приложение:
qDebug() << "File location:" << QFileInfo("clock.png").absoluteFilePath();


Название: Re: Макс Шлее примеры
Отправлено: gelonis от Апрель 09, 2010, 17:17
File location: "D:/Programmer/C++/qt_books/exem/Examples/chapter05/MouseCursor/debug/clock.png"

Файл находится:
"D:/Programmer/C++/qt_books/exem/Examples/chapter05/MouseCursor/clock.png"
Почему так?

Положил его в /debug/ все работает. Должен искать в корне каталога или нет?


Название: Re: Макс Шлее примеры
Отправлено: lit-uriy от Апрель 09, 2010, 20:10
>>Должен искать в корне каталога или нет?
Где написал, там и должен искать.
Если написал "stone.jpg", то будет искать в текущем каталоге приложения, а он может изменятся, например явной установкой QDir::setCurrentPath, или извне, например, создав ярлык к программе и задав в нём поле "рабочий каталог".


Название: Re: Макс Шлее примеры
Отправлено: lit-uriy от Апрель 09, 2010, 20:11
>>файлы рисунков находятся в каталогах с исполняемым файлом
как видишь, ты даже дезинформировал форумчан. Т.к. исполняемый файл лежит совсем не там, где лежит файл с картинкой


Название: Re: Макс Шлее примеры
Отправлено: gelonis от Апрель 10, 2010, 11:22
Я думал исполняемый файл имеет расширение .exe.


Название: Re: Макс Шлее примеры
Отправлено: lit-uriy от Апрель 10, 2010, 12:27
>>Я думал исполняемый файл имеет расширение .exe.
на виндовозе так и есть


Название: Re: Макс Шлее примеры
Отправлено: gelonis от Апрель 10, 2010, 13:01
File location: "D:/Programmer/C++/qt_books/exem/Examples/chapter05/MouseCursor/debug/clock.png"

Файл находится:
"D:/Programmer/C++/qt_books/exem/Examples/chapter05/MouseCursor/clock.png"
Почему так?

Положил его в /debug/ все работает. Должен искать в корне каталога или нет?

Так у меня ехе  находится в
"D:/Programmer/C++/qt_books/exem/Examples/chapter05/MouseCursor/"
а в
"D:/Programmer/C++/qt_books/exem/Examples/chapter05/MouseCursor/debug/
объектные файлы, после записи "clock.png" в каком каталоге должен происходить поиск, те какой является корнем?


Название: Re: Макс Шлее примеры
Отправлено: lit-uriy от Апрель 10, 2010, 13:48
В таком случае нужно выяснить, почему у тебя меняется текущий каталог приложения.

Ты приложение как запускаешь? Из командной строки, файлового менеджера или как-то ещё?


Название: Re: Макс Шлее примеры
Отправлено: gelonis от Апрель 10, 2010, 14:04
Запускаю в Qt creator


Название: Re: Макс Шлее примеры
Отправлено: shirushizo от Апрель 10, 2010, 15:39
Qt Creator создает exe-файлы в папках debug/release, относительный путь указывается от нее. Если QDir::setCurrentPath() непользовал, то туда и кидай.