Seite 1 von 1
Transparente Widget
Verfasst: 11. Januar 2010 11:15
von graythornWW
Hallo zusammen,
ich habe eine Application (von QMainWidget abgeleitet). Darauf befindet sich eine Eingabezeile, die soll jedoch transparent werden.
Der Befehl
funktioniert jedoch nicht, das Control sieht genauso aus wie zuvor. Er scheint nur auf top level Windows zu arbeiten
Gibt es eine Möglichkeit, Controls auf einem QMainWidget transparent zu gestalten
Danke und Gruß
Andreas
Verfasst: 11. Januar 2010 11:47
von chris_g
Hi.
Ich mache das so:
Im Konstruktor setzte ich eine der folgenden Eigenschaften für den WindowType.
Code: Alles auswählen
setWindowFlags(Qt::SplashScreen); // With this set, the Widget can have a parent AND setWindowOpacity works without a Window border.
//setWindowFlags( Qt::ToolTip ); // FullscreenController from VLC sources does this. Same effect as Qt::SplashScreen
this->setWindowOpacity(0.5);
Ich denke, das 'sollte' dann auch bei allen Widgets funktionieren, die hier platziert werden.
Grüße
Chris
Verfasst: 11. Januar 2010 12:33
von graythornWW
Zum Verständniss meines kleinen Problems füge ich mal einen Scrrenshot hinzu.
Die hellblauen Editzeilen und die hellgrünen Buttons sollen halbtransparent werden, d.h. in diesem Falle sollen die Biergläser durchscheinen. Ich habe es mit folgendem Code versucht, der jedoch nicht funktioniert.
Code: Alles auswählen
BOMChecker::BOMChecker(QWidget *parent) : QMainWindow(parent)
{
ui.setupUi(this);
ui.m_pEdtPathOld->setWindowOpacity(0.5);
...
connect(ui.m_pBtnBrowseOld, SIGNAL(clicked(bool)), this, SLOT(OnBrowsePathOld(bool)));
...
} // BOMChecker::BOMChecker
chris_g schrieb:
Im Konstruktor setzte ich eine der folgenden Eigenschaften für den WindowType.
Code:
setWindowFlags(Qt::SplashScreen); // With this set, the Widget can have a parent AND setWindowOpacity works without a Window border.
//setWindowFlags( Qt::ToolTip ); // FullscreenController from VLC sources does this. Same effect as Qt::SplashScreen
this->setWindowOpacity(0.5);
Wenn ich das mache, also:
Code: Alles auswählen
BOMChecker::BOMChecker(QWidget *parent) : QMainWindow(parent)
{
ui.setupUi(this);
setWindowFlags(Qt::SplashScreen);
ui.m_pEdtPathOld->setWindowOpacity(0.5);
...
connect(ui.m_pBtnBrowseOld, SIGNAL(clicked(bool)), this, SLOT(OnBrowsePathOld(bool)));
...
} // BOMChecker::BOMChecker
erhalte ich als Resultat ein QMainWindow ohne Rahmen (eben ein Splash-Window), und die Controls sind immer noch nicht transparent
Was mache ich falsch?
Verfasst: 11. Januar 2010 12:54
von chris_g
Les dir mal das durch:
http://doc.trolltech.com/qq/qq16-background.html
und schau am besten die Beispiele in den QT-sourcen an. Besonders die Analoguhr, da wird auch mit Transparenzen gearbeitet.
setAttribute(Qt::WA_NoSystemBackground);
Verfasst: 11. Januar 2010 14:47
von graythornWW
wie kann ich verhindern, das ein Child seinen Hintergrund zeichnet?
führt zu keinem Ergebnis. Der Hintergrund ist nach wie vor der gleiche wie ohne diesen Aufruf.
Schon mal Danke für eure Hilfe.....