> On June 15, 2016, 11:59 a.m., Christoph Feck wrote: > > Does it also need updates to KF5::DesignerPlugin? > > Elvis Angelaccio wrote: > Hmm, I didn't even know about this plugin when I did my test. In > `kde.widgets` I see: > > ```ini > # KWidgetsAddons > [KCapacityBar] > IncludeFile=kcapacitybar.h > ToolTip=Capacity Bar (KDE) > ConstructorArgs=(KCapacityBar::DrawTextOutline, parent) > Group=Display (KDE) > ``` > > and now I'm wondering why Qt Designer ignores the first argument when it > generates the constructor call...
I investigated a bit more and the `uic` tool always creates custom widgets using [a single-argument constructor](https://code.woboq.org/qt5/qtbase/src/tools/uic/cpp/cppwriteinitialization.cpp.html#626) (with the widget's parent): ```cpp m_output << m_indent << varName << " = new " << m_uic->customWidgetsInfo()->realClassName(className) << '(' << parentWidget << ");\n"; ``` In fact, there are multiple widgets affected by this problem (for example KMultiTabBar)... - Elvis ----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: https://git.reviewboard.kde.org/r/128191/#review96519 ----------------------------------------------------------- On June 15, 2016, 10:19 a.m., Elvis Angelaccio wrote: > > ----------------------------------------------------------- > This is an automatically generated e-mail. To reply, visit: > https://git.reviewboard.kde.org/r/128191/ > ----------------------------------------------------------- > > (Updated June 15, 2016, 10:19 a.m.) > > > Review request for KDE Frameworks and Christoph Feck. > > > Repository: kwidgetsaddons > > > Description > ------- > > Currently KCapacityBar doesn't seem to be usable from Qt Designer (unless I'm > doing something wrong). > The class has only an explicit multi-argument constructor, but Qt Designer > generates something like: > > ```c++ > capacityBar = new KCapacityBar(widget_3); > ``` > > which fails to compile because there is no explicit conversion from > `QWidget*` to `KCapacityBar::DrawTextMode`: > > ``` > error: no matching constructor for initialization of 'KCapacityBar' > capacityBar = new KCapacityBar(widget_3); > ^ ~~~~~~~~ > /usr/include/KF5/KWidgetsAddons/kcapacitybar.h:44:29: note: candidate > constructor (the implicit copy constructor) not viable: no known conversion > from > 'QWidget *' to 'const KCapacityBar' for 1st argument > class KWIDGETSADDONS_EXPORT KCapacityBar > ^ > /usr/include/KF5/KWidgetsAddons/kcapacitybar.h:72:14: note: candidate > constructor not viable: no known conversion from 'QWidget *' to > 'KCapacityBar::DrawTextMode' for 1st argument > explicit KCapacityBar(DrawTextMode drawTextMode = DrawTextOutline, > QWidget *parent = 0); > ``` > > This patch simply adds another constructor with a single argument (the > pointer to the parent). > > > Diffs > ----- > > src/kcapacitybar.h 1a1f2e60f415904d6cf603a4b4e0cae1c543169a > src/kcapacitybar.cpp ecd2c13feb88f5c9e92086639bff48c6d0527779 > > Diff: https://git.reviewboard.kde.org/r/128191/diff/ > > > Testing > ------- > > KCapacityBar can now be used in a Qt Designer custom widget. > > > Thanks, > > Elvis Angelaccio > >
_______________________________________________ Kde-frameworks-devel mailing list Kde-frameworks-devel@kde.org https://mail.kde.org/mailman/listinfo/kde-frameworks-devel