Review Request 128191: Let KCapacityBar be usable in Qt Designer
Elvis Angelaccio
elvis.angelaccio at kdemail.net
Wed Jun 15 17:09:03 UTC 2016
> 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
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/kde-frameworks-devel/attachments/20160615/d53b31b9/attachment-0001.html>
More information about the Kde-frameworks-devel
mailing list