# Was ist denn nun richtig USE-Flags: qt3 qt4 qt3support [gel]

## SvenFischer

Hallo,

ich verstehe leider nicht, wie sich die USE-Flags verhalten.

Momentan habe ich ein KDE3 Desktop System, also habe ich bisher auf qt4 verzichtet und nur qt3 und qt3 support verwendet. Was passiert, wenn ich zusätzlich noch qt4 aktiviere?

Was passiert, wenn ich eine KDE4 hätte, und noch qt3 und qt3support aktiviert hätte?

Was ist der Unterschied zwischen qt3 und qt3support?Last edited by SvenFischer on Thu Mar 20, 2008 1:35 pm; edited 1 time in total

----------

## franzf

Qt3 wird von Trolltech nicht mehr supported, nur noch Qt4. Es existieren noch viele Qt3-Programme, welche portiert (nach Qt4) werden müssen/sollten. Da viele Klassen in Qt4 nicht mehr vorhanden sind/umbenannt wurden o.ä. will man den Programmierern das Leben bei der Portierung von Qt3 nach Qt4 erleichtern und bietet mit den Qt3-Supportklassen eine einfache Möglichkeit von Qt4 zu profitieren bei minimalem (initialem) Portieraufwand. Genau diese (Qt4-)Klassen aktiviert das qt3support-Flag.

Die 3 USE-Flags gehen sich nicht im Wege rum. USE="qt4" aktiviert bei einigen Programmen eine optionale grafische Benutzerschnittstelle mit Qt4, äquivalent dazu qt3. Manche Programme benötigen aber zwingend qt3support (siehe Begründung oben), da sie sonst nicht kompilieren.

Ich hoffe das war jetzt klar genug  :Wink: 

Grüße

Franz

----------

## jonny_mc_conny

oder anders gesagt: 

wenn man qt4 nutzen möchte, aber ältere Programme weiterhin nutzen möchte, aktiviert man qt4 und qt3support, lässt die qt3 use variable aber aussen vor.

is das so richtig?

----------

## franzf

 *jonny_mc_conny wrote:*   

> oder anders gesagt: 
> 
> wenn man qt4 nutzen möchte, aber ältere Programme weiterhin nutzen möchte, aktiviert man qt4 und qt3support, lässt die qt3 use variable aber aussen vor.
> 
> is das so richtig?

 

nein  :Wink: 

In dem Fall brauchst du schon noch Qt3 installiert. qt3support ist ein USE-Flag nur für qt4!

```
$ equery hasuse qt3support

[ Searching for USE flag qt3support in all categories among: ]

 * installed packages

[I--] [ ~] x11-libs/qt-4.4.0_pre20080319 (4)

[I--] [ ~] x11-libs/qt-gui-4.4.0_pre20080319 (4)

[I--] [ ~] x11-libs/qt-opengl-4.4.0_pre20080319 (4)

[I--] [ ~] x11-libs/qt-sql-4.4.0_pre20080319 (4)

[I--] [ ~] x11-libs/qt-core-4.4.0_pre20080319 (4)
```

Es hilft dir also nicht, einfach qt3 zu streichen und durch qt3support von Qt4 zu profitieren, der Programmierer muss schon bissl was tun (Klassen umbenennen, z.B. heißt die (Qt3)Klasse QValueList dann Q3ValueList).

Nachtrag:

Hier noch zwei links aus der Qt4-Doku:

Qt3 Compatibility Classes

Porting to Qt4

----------

## SvenFischer

Also, ersteinmal Danke für die Antwort,

nun bin ich aber immer noch verwirrt.

Wenn ich qt4 und qt3support verwende, dann bleibt qt3 (das Programm, nicht das USE-Flag) installiert? Warum, wenn der Support doch durch das Qt4-Programm gewährleistet wird!? Wie auch immer, ich kann also ohne Gefährdung das qt3-USE-Flag deaktivieren?

Was wäre dann mit meinem Paket:

```

[ebuild   R   ] app-crypt/pinentry-0.7.4-r1  USE="ncurses qt3 -caps -gtk" 407 kB

```

.. ich würde beim Streichen vo  dem qt3-USE-Flag die graphische Oberfläche verlieren.

Die Lösung liegt scheinbar darin, alle drei USE-Flags zu aktivieren (qt3 qt3support qt4), oder?

Was passiert in diem Fall:

```

[ebuild   R   ] app-text/poppler-bindings-0.6.1  USE="cairo gtk qt3 qt4* -test" 1,257 kB

```

Welche Qt Version wird denn nun genutzt, 3, 4 oder beide gleichzeitig?

----------

## einheitlix

Wie schon gesagt: die 3 USE Flags stehen sich nicht im Weg.

Du kannst also problemlos alle 3 aktivieren.

Wenn du das qt3 USE flag deaktivierst, und dann per emerge --newuse world deine Paket neu emergest, verlierst du bei allen Programmen den optionalen qt3 Support. Wenn ein Programm, wie bei dir z.B. pinentry, also nur Unterstützung für qt3, nicht aber für qt4 hat, dann verlierst du die graphische Oberfläche, ja. Also lass einfach alle aktiviert. Wenn es irgendwann mal keine Programme mehr gibt, die (nur) auf qt3 basieren, kannst du das dann deaktivieren  :Wink: 

poppler-bindings scheint ja beides zu unterstützen, hier könntest du (vermutlich) qt3 deaktivieren. Aber vielleicht handelt es sich bei dem Paket auch um Bindings für andere Libs, dann solltest du es doch lassen, weiß ich nicht genau, ist auch nicht so wichtig: lass einfach alle 3 USE flags aktivierst und du hast keine Probleme!

----------

## franzf

 *SvenFischer wrote:*   

> Wenn ich qt4 und qt3support verwende, dann bleibt qt3 (das Programm, nicht das USE-Flag) installiert? Warum, wenn der Support doch durch das Qt4-Programm gewährleistet wird!? Wie auch immer, ich kann also ohne Gefährdung das qt3-USE-Flag deaktivieren?

 

Qt4/Qt3 sind keine Programme sondern Bibliotheken. Ein Programmierer kann sich daraus Klassen "ausleihen" so wie ein Student Bücher aus einer "Buchbibliothek". Das erleichtert ihm das Leben ungemein, da er sich nicht selbst um die Bereitstellung der Funktionalität kümmern muss (Fenster zeichnen, Text aus einem LineEdit auslesen, XML parsen usw.). Ebenso braucht der Student nicht extra forschen gehen, wenn die Ergebnisse auch schon fertig in Büchern rumliegen  :Wink: 

Qt3 und Qt4 sind nun zwei verschiedene "Bücher". Beide machen was ähnliches, in einigen Bereichen sagen sie das gleiche. Im Detail gibt es aber gravierende Unterschiede. Sie sind nicht kompatibel!

(Vorsicht jetzt wirds gefährlich ^^)

Nimm einen Deutschstudenten. Gerade wird gelesen und interpretiert, sagen wir Goethes Faust. Es gibt 2 Professoren, die zwar beide Goethe interpretieren (lassen), doch beides mal kommt ein ganz anderes Ergebnis raus! Prof A (Qt4) und Prof B(Qt3) sind nicht kompatibel! Wenn ein Stud. aus dem Kurs von Prof A bei Prof B eine Prüfung schreiben muss wird er sicher durchfallen!

Nun gibt es noch Prof. C (Qt3Support). Dieser ist der Bruder von Prof A, hat aber bei Prof B studiert. Dieser kennt nun beide Interpretationen und kann den Studenten von Prof A die Interpretation von Prof B mit Hilfe der erlernten Techniken von Prof A beibringen. Das ist dann die Parallele zu der Aufgabe von "qt3support".

Also nochmal:

"qt3support" installiert eine zusätzliche Bibliothek zusammen mit Qt4, die es ermöglicht ganz einfach (als Programmierer!) sein Programm von Qt3 nach Qt4 zu schiffen. Für den User äußert sich dies meist in einer neuen Version  :Wink: 

 *Quote:*   

> Was wäre dann mit meinem Paket:
> 
> ```
> 
> [ebuild   R   ] app-crypt/pinentry-0.7.4-r1  USE="ncurses qt3 -caps -gtk" 407 kB
> ...

 

Genau. Und USE="qt3support" emerge x11-libs/qt:4 wird dir dabei nicht helfen.

 *Quote:*   

> Die Lösung liegt scheinbar darin, alle drei USE-Flags zu aktivieren (qt3 qt3support qt4), oder?

 

Wenn du Programme hast, die auf Qt4 aufbauen und noch auf die Qt3Support-Bibliothek angewiesen sind -> ja. Und solange du Programme hast, die Qt3 für eine grafische Oberfläche verwenden die du auch nutzen willst, musst du auch hier weiterhin das USE-Flag "qt3" aktivieren.

 *Quote:*   

> Was passiert in diem Fall:
> 
> ```
> 
> [ebuild   R   ] app-text/poppler-bindings-0.6.1  USE="cairo gtk qt3 qt4* -test" 1,257 kB
> ...

 

Dann werden beide benutzt. In dem Fall wird es möglich, poppler sowohl für ein Qt3- als auch ein Qt4-Programm zu verwenden, und dann PDFs anzuzeigen.

```
# equery d poppler-bindings

[ Searching for packages depending on poppler-bindings... ]

app-office/koffice-9999.4 (pdf? >=app-text/poppler-bindings-0.5.4)

kde-base/kdegraphics-9999.4 (pdf? >=app-text/poppler-bindings-0.5.4)

kde-base/kpdf-3.5.9 (>=app-text/poppler-bindings-0.6.1)

media-gfx/gimp-2.4.5 (pdf? >=app-text/poppler-bindings-0.3.1)

# eix poppler-bindings

[I] app-text/poppler-bindings

     Installed versions:  0.6.1(12:33:37 29.11.2007)(cairo gtk qt3 qt4 -test)
```

Es wird zwar immer wirrer, ich hoffe aber trotzdem dass es jetzt "etwas" klarer ist als vorher ^^ (sry)

Grüße

Franz

//edit:

Im wohl skurrilsten Vergleich der Geschichte Trolltechs hab ich der Verständlichkeit haöber hinter die Professoren einmalig das Qt-Äquivalent angefügt ^^

----------

## einheitlix

lol  :Very Happy: 

Die Erklärung ist wirklich herrlich...  :Wink: 

----------

