Change Desktop Wallpaper
-
OK, i changed it to widgets application. And yes i'm using MinGW.
I tried to config MSVC for my Qt Creator, but i wasn't successfull:-
:-1: Warnung: LNK4044: Nicht erkannte Option /lshell32; wird ignoriert.
-
:-1: Warnung: LNK4044: Nicht erkannte Option /LC:\Qt\Qt5.5.1\5.5\mingw492_32\lib; wird ignoriert.
-
:-1: Warnung: LNK4044: Nicht erkannte Option /lQt5Cored; wird ignoriert.
-
:-1: Fehler: LNK1104: Datei "C:\Qt\Qt5.5.1\5.5\mingw492_32\lib\qtmaind.lib" kann nicht geƶffnet werden.
I'm sure i need the libs for msvc, but i couldn't find them. Are there the libs pre compiled? Or do i need to take the qt-everywhere-opensource-src-5.5.1.zip and build the source with my compiler on my own??
(I have Visual Studio Enterprise 2015 installed) -
-
Unfortunately pre-compiled Libs for Qt are not provided with the official release (not yet!) but you can try building from source yourself.
I would suggest installing a lower version of MSVC compiler such as MSVC2013 (Community Edition is free btw) and using pre-compiled libraries if you are not comfortable with building sources yourself, or if you would prefer official builds. -
Ok i'll try to build the source. I did it a while ago with MinGW for static linking. So i hope it will be similar to this.
What's the difference between qt-everywhere-opensource-src-5.5.1 http://download.qt.io/archive/qt/5.5/5.5.1/single/ and qt5-opensource-src-5.5.1 http://download.qt.io/archive/qt/5.5/5.5.1/submodules/Why should i use a lower version of MSVC?? I recently updated from VS 2013 Ultimate to VS 2015. So i'd prefer the newer one. But if this is a problem I can install VS2013 again.
-
@QT-static-prgm
Single is like an All-In-One package of modules but submodules version offers all modules separately.
Most probably you need Single version.
I'll suggest taking a look at this page and also this postYou need to use the lower version if you want the official build. If not, you can build yourself.
Good luck -
Thank you very much. Your tutorial is great. But i have some problems again:
+ cd qtbase + C:\Qt\5.5.1\qt-everywhere-opensource-src-5.5.1\qtbase\configure.bat -top-level -static -debug-and-release -prefix "C:\Qt\5.5.1\msvc2015_static" -platform win32-msvc2015 -qt-zlib -qt-pcre -qt-libpng -qt-libjpeg -qt-freetype -opengl desktop -qt-sql-sqlite -qt-sql-odbc -no-openssl -opensource -confirm-license -make libs -nomake tools -nomake examples -nomake tests This is the Qt for Windows Open Source Edition. You have already accepted the terms of the license. Creating qmake... execute: File or path is not found (nmake) execute: File or path is not found (nmake) Cleaning qmake failed, return code -1
btw what are all these options good for??
did i take the wrong cmd?? I used "MSBuild Befehlszeile fĆ¼r VS2015". There some more in my Start->All Programms->Visual Studio list:
Developer-Eingabeaufforderung fĆ¼r VS2015,
VS2015 x64 ARM Cross Tools-Eingabeaufforderung,
VS2015 x64 Native Tools-Eingabeaufforderung,
VS2015 x64 x86 Cross Tools-Eingabeaufforderung,
VS2015 x86 ARM Cross Tools-Eingabeaufforderung,
VS2015 x86 Native Tools-Eingabeaufforderung,
VS2015 x86 x64 Cross Tools-EingabeaufforderungWhich one is the right one??
-
You should have "Developer Command Prompt for VS2015"
You are using German version so "Developer-Eingabeaufforderung fĆ¼r VS2015" is correct! -
It works :D Thank you very much.
Ƥhm ok i just wanted to press send and checked my cmd output and it "finished". But it says:jom: C:\Qt\5.5.1\qt-everywhere-opensource-src-5.5.1\qtdeclarative\src\qml\Makefile.Debug [.generated\debug\RegExpJitTables.h] Error 1
jom: C:\Qt\5.5.1\qt-everywhere-opensource-src-5.5.1\qtdeclarative\src\qml\Makefile [debug-all] Error 2
jom: C:\Qt\5.5.1\qt-everywhere-opensource-src-5.5.1\qtdeclarative\src\Makefile [sub-qml-make_first-ordered] Error 2
jom: C:\Qt\5.5.1\qt-everywhere-opensource-src-5.5.1\qtdeclarative\Makefile [sub-src-make_first] Error 2
jom: C:\Qt\5.5.1\qt-everywhere-opensource-src-5.5.1\Makefile [module-qtdeclarative-make_first] Error 2 -
@QT-static-prgm check your build folder. Most probably you already have most of the libraries built. Continue with "jom install" command.
But you can also check for dependencies and/or remove the module causing the problem, in this case it is qtdeclarative, and then rebuild. -
-nomake qtdeclarative doesn't work :/
- cd qtbase
- C:\Qt\5.5.1\qt-everywhere-opensource-src-5.5.1\qtbase\configure.bat -top-level -static -debug-and-release -prefix "C:\Qt\5.5.1\msvc2015_static" -platform win32-msvc2015 -c++11 -qt-zlib -qt-pcre -qt-libpng -qt-libjpeg -qt-freetype -opengl desktop -qt-sql-sqlite -qt-sql-odbc -no-openssl -opensource -confirm-license -make libs -nomake tools -nomake examples -nomake tests -nomake qtdeclarative
Unknown part qtdeclarative passed to -nomake.
-
@QT-static-prgm It won't. You have to carefully read configure options. I suggest taking a look at this old post of mine about configure options. If I am not mistaken, you need to use "skip" instead of "nomake"
-
And again, thank you so much. What is qtdeclarative good for??
-
@QT-static-prgm it is related to QML. I usually can live without it :)
-
Next error:
Error: dependent 'C:\Qt\5.5.1\qt-everywhere-opensource-src-5.5.1\qtdeclarative\lib\Qt5Qmld.lib' does not exist.
jom: C:\Qt\5.5.1\qt-everywhere-opensource-src-5.5.1\qtwebchannel\src\webchannel\Makefile [debug-all] Error 2
jom: C:\Qt\5.5.1\qt-everywhere-opensource-src-5.5.1\qtwebchannel\src\Makefile [sub-webchannel-make_first] Error 2
jom: C:\Qt\5.5.1\qt-everywhere-opensource-src-5.5.1\qtwebchannel\Makefile [sub-src-make_first] Error 2
jom: C:\Qt\5.5.1\qt-everywhere-opensource-src-5.5.1\Makefile [module-qtwebchannel-make_first] Error 2I think it's a kind of Windows 10 problem: https://forum.qt.io/topic/58056/compilation-failure-with-vs2015/3
-
@QT-static-prgm
HI just a side note:
I used this on Win 7 to change wallpaper.
(with mingw compiler)
Never tested on window 10, so might not work.#include "mainwindow.h" #include <QApplication> #include <qDebug> #include <Windows.h> int setwallpaper (QString filePath ) { bool ret = SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, (PVOID)filePath.utf16(), SPIF_SENDWININICHANGE | SPIF_UPDATEINIFILE); return ret; } int main(int argc, char* argv[]) { QApplication a(argc, argv); MainWindow w; w.show(); setwallpaper("c:/test.jpg"); // adjust return a.exec(); }
-
Your code looks easy. I'll try it. But for now my program shown above is working with the VS compiler.
Thank you all :D
Ok next i'll try to manipulate the image to show the date and clock in the lower right corner. (my university killed the windows clock. That's why i need this ;))
-
mrjj Lifetime Qt Championreplied to QT-static-prgm on 8 Dec 2015, 13:38 last edited by mrjj 12 Aug 2015, 13:40
@QT-static-prgm
hehe so you switch compiler and
compiled all of Qt so you can change
the wallpaper each minute and that way
get a clock ???
:))
That is the spirit if I ever saw one :))but are you sure they allow to change the wallpaper?
-
@mrjj
That's the aim :Dbtw your code works fine as well. It is only faster then the other one. This:
#include "mainwindow.h" #include <QApplication> #include <QDebug> #include "shobjidl.h" #include <Windows.h> int setwallpaper (QString filePath ) { bool ret = SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, (PVOID)filePath.utf16(), SPIF_SENDWININICHANGE | SPIF_UPDATEINIFILE); return ret; } int main(int argc, char *argv[]) { HRESULT hr = CoInitialize(NULL); IDesktopWallpaper *pDesktopWallpaper = NULL; hr = CoCreateInstance(__uuidof(DesktopWallpaper), NULL, CLSCTX_ALL, IID_PPV_ARGS(&pDesktopWallpaper)); if (FAILED(hr)) { qDebug() << "error"; } else { pDesktopWallpaper->SetWallpaper(NULL, QString("D:\\Bilder\\BMW\\3er nachher.jpg").toStdWString().c_str()); } qDebug() << setwallpaper("D:\\Bilder\\BMW\\f22-wallpaper-1920x1600-16.jpg"); return 0; }
causes in first shown the f22-wallpaper-1920x1600-16.jpg image and then 3er nachher. So maybe your code is better and that way there was no need to compile qt for vs.
But ok now i understand building qt a bit better XD
-
Ok. good to know,
Next its to create a timer object
http://www.bogotobogo.com/Qt/Qt5_QTimer.php
and then ( code not syntax checked)// draw time on image QPixmap pix("D:\\Bilder\\BMW\\3er nachher.jpg"); QPainter paint(pix); QTime time = QTime::currentTime(); QString text = time.toString("hh:mm"); paint.drawText(pix.width()-100,pix.height()-20,text);
and off u go :)
-
@mrjj You saved my time. Thanks for the commands. I hope there are not too much questions tomorrow than i find some time to implement it in the cip-pool :D
-
@QT-static-prgm
Well its a good cause :)
Repel against the clock-less desktops!!
I think it would be the easiest to move all code to the timer object.
and let it draw on image then set it.
over and over :)
15/40