> 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

Reply via email to