Led Like buttons/Widgets
-
There's also a LED widget in KDE4, KLed Class Reference.
-
Guys thank a lot for all your hints. I will find a solution that better fits in my project for sure. Thumbs up for all your answers!
-
@mrjj
This is a very interesting plugin , i would like to use it.
I can build the project i downloaded from your dropbox but i still do not find the plugin into my designer.I'm under windows , are there any particular passages i have to do to make it work?
Thank a lot for your time.My QT version is 5.7
-
@Bruschetta
Hi.
Plugins are Dlls. Creator are compiled with Visual Studio. (2013)
So to load custom plugin, it must be compiled with visual studio and not mingw.
Then the dll should be copied to "\bin\plugins\designer"Alternative you can use the Qleds by Promotion
http://doc.qt.io/qt-5/designer-using-custom-widgets.htmlAlternative, you can have my VS DLL
https://www.dropbox.com/s/1f65fzcew6pjm2z/VSqledplugin.zip?dl=0
Copy to C:\Qt\Tools\QtCreator\bin\plugins\designer
Disclaimer: Normally I do not recommend downloading DLLS from forums. -
@Bruschetta
Np.
I think its needs a .pri file to be complete
http://doc.qt.io/qt-5/designer-creating-custom-widgets.html
section "Splitting up the Plugin"
To make it easy to use in a clean project.
Then all you need to do is
include(QLeds.pri)
to use in a project. Didn't try that yet. -
@mrjj
with the dll now i see the widget in the Designer.
Anyway if i use it in i have serveral errors.In particular i tried to create the PRI file containing:
INCLUDEPATH += $$PWD HEADERS += $$PWD/qled.h SOURCES += $$PWD/qled.cpp
That i added to the plugin and the project file
Whan i try to compile now i get this error
mingw32-make[1]: *** No rule to make target '../../QTProjects-New/Alpha2/qled.cpp', needed by 'debug/qled.o'. Stop.:
What i'm doing wrong with this pri files?
Is again mingw fault? -
@Bruschetta
Hi.
seems fine.
I have not tried this yet.
No, should not be mingw fault. :)maybe we be need
QT += QLedSounds like its not linking the plugin but I not sure if that will do it.
I also really want to know how to do this the right way. as I think its very little needed to fully work but
not sure what it is. -
@mrjj
Unfortunately for me .pri files are not working, neither copying the qled.h and qled.cpp into the project.I got those warnings during compile time
warning: 'virtual const QMetaObject* QLed::metaObject() const' redeclared without dllimport attribute: previous dllimport ignored warning: 'void QLed::setOffColor(QLed::ledColor)' redeclared without dllimport attribute: previous dllimport ignored . .
and errors
QTProjects\build-Alpha2-Desktop_Qt_5_7_0_MinGW_32bit-Debug/debug/moc_qled.cpp:151: undefined reference to `_imp___ZN4QLed10setOnColorENS_8ledColorE QTProjects\build-Alpha2-Desktop_Qt_5_7_0_MinGW_32bit-Debug/debug/moc_qled.cpp:153: undefined reference to `_imp___ZN4QLed8setShapeENS_8ledShapeE . .
tried to add qledplugin.dll as lib in the .pro file too without success.
Have you any suggestion ? :)
Thanks again for the attention and time -
Yes. If you remove the QDESIGNER_WIDGET_EXPORT
from the qled.h it will link and run
as inclass /*QDESIGNER_WIDGET_EXPORT*/ QLed : public QWidget {
You also need the qres in PRI file
qled.priQT += svg INCLUDEPATH += $$PWD HEADERS += $$PWD/qled.h SOURCES += $$PWD/qled.cpp RESOURCES += $$PWD/qled.qrc
Note that this is slightly hack-ish as you need QDESIGNER_WIDGET_EXPORT when compiling as plugin.
But not when using it via .PRI file. -
@Bruschetta
Super :) -
@mrjj You have been very helpful to @Bruschetta and I'm wondering if you will go a little further.
The Qleds57.zip file is no longer in your drop box. Would you mind terribly putting up a copy again? Or a 5.10 version?
I'm trying to walk through this as a beginner and keep running into roadblocks.
-
@BlackDogWhite
Surely
Here is similar sample
https://www.dropbox.com/sh/mnaipp7apodqp0d/AABkpILwRICtBxd-5lK0CcUSa?dl=0Make sure to open UseTheLeds.pro
in the UseTheLeds subfolder.
It show a led using .pri inclusion. That is it compiles the leds into the project.There is also qledplugin.pro that compiles it as a plugin.
Note that to use it as a plugin, you need the visual studio compiler to make it loadable by
Creator. (mingw wont work)Using .pri inclusion, you dont have a plugin, but can use promotion. ( as UseTheLeds.pro shows)
While a plugin, offers design time settings of properties, you can access the promoted led in code
using ui->ledname and hence get almost the same.Let me know if you want to create a plugin. I didnt test if that part just works
but UseTheLeds surely runs on 5.10 -
@mrjj Thank you for sharing those files. I was able to open the UseTheLeds project, run it, modify it and all was cool.
But then I tried to add another instance of the qLed, both by promotion (drag a Containers->Widget onto the form; rtClk->Promote ) and by coping the already working qLed object. Neither of these worked. Adding to the MainWindow constructor
ui->qLed_2->setShape(QLed::Circle); // the "copied" version of qLed ui->MyQled->setShape(QLed::Circle); // the promoted container widget
would cause the compile to fail because neither qLed_2 nor MyQled were members of Ui::MainWindow.
Obviously I've skipped an important step. Probably something to do with ui_mainwindow.h. Am I supposed to edit that manually (I don't think so, but it's not getting updated automatically)?
Hints??
-
@mrjj
ohhhh, I must not have something set up properly, maybe because this was just a demo. But when I add stuff to the ui, the ui_mainwindow.h file is created up and over in a build-UseTheLeds-Desktop_blah_blah-Debug directory. So that .h file has references to MyQled and qLed_2.Must be something screwed up in my environment.
-
@BlackDogWhite
hi, nope something up with usetheleds demo as copying
the promoted several time didnt show many lights.
Ill will report back when i have a look at it :) -
@mrjj well, it may also be my environment, sadly. I'm trying to figure out Qt, both on the PC and on a Raspberry Pi 3, using MS Visual Studio (which I'm pretty familiar with), along with QT VS Tools and VisualGDB.
-
I can get your demo (UseTheLeds) working under Qt Creator (except for the above referenced problem) and displaying on the PC
-
I also have a working GUI program developed on the PC (with VS, Qt VS Tools, and VisualGDB) that runs both on the PC and squirts down to the Pi.
-
But trying to add the Qled code to the working GUI program breaks everything, possibly in part because the cross compiler chain (c:\sysgcc\raspberry...) cannot find QtSvg includes. When I search for QtSvg, I find it but only in a qt4 dir chain (SysGCC\raspberry\arm-linux-gnueabihf\sysroot\usr\include\qt4...)
Ouch, I'm getting a headache!
-
-
@BlackDogWhite
Hi
Do you need it to be very scale able ?
Else we could use png for the leds if getting the SVG module to the Pi is
difficult.However, there was something odd wiht the sample. i will link a new one here as soon as its weekend :)
-
@mrjj First off, I'm up for any help someone is willing to offer. A revised version would be very useful, if only to study the differences and learn something else about how all this works.
I'm going to look, hopefully this afternoon, where my cross compiler install went wrong. Maybe I can get that upgraded to Qt5 so the SVG stuff works. But I certainly wouldn't mind seeing how it would work with PNG's!