Why we shouldn't install header files created by UIC

Tobias Erbsland terbsland at printsoft.ch
Thu Apr 7 07:53:10 UTC 2005


Hello

> As I'm going through and changing the main settings widget to look nicer
> (screenshot at
> http://www.sourcextreme.com/projects/kdevelop/newmainsettings.png), I've
> noticed that we're installing a header file that's based of a .ui file and
> calling it public API (i.e. we're not saying these headers are private and
> they shouldn't be used). There are several reasons why this is bad, and
> here's the two that i can think of ATM:
> (...)
> The solution to this is to create a new class that contains a pointer to
> the UIC generated class and make this class part of the public API.We can't
> base the new class off of the UIC generated class because you'll still run
> into the above two points. Anyways, i still plan to go forward with my
> changes, so i hope nobody cares that we're breaking BC.

This is solved anyway with Qt4.0. In Qt4.0 the UIC is generating a class in a 
special namespace "Ui". This class has the method "setupUi()" which is called 
from your constructor.

class Foo : public QWidget
{
	Foo();
	
private:	
	Ui::Foo ui;
}

Foo::Foo()
  : QWidget()
{
  ui.setupUi( this );
}

best regards
Tobias





More information about the KDevelop-devel mailing list