Rahmenloses und transparentes Fenster qt5
Ich bin ziemlich neu in Qt und C ++ und ich habe ein Problem, das ich nicht herauszufinden scheint. Ich möchte ein rahmenloses und transparentes Fenster öffnen, wenn ich auf eine Schaltfläche auf der Hauptbenutzeroberfläche klicke. Ich habe den Code zum Öffnen eines neuen Fensters, wenn ich eine Taste auf der Hauptbenutzeroberfläche drücke, aber ich kann den rahmenlosen und transparenten Teil scheinbar nicht zum Laufen bringen.
Hier sind die Quellcodes für das kleine Programm, das ich geschrieben habe, um dies zu lernen
main.cpp
#include "learnwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
LearnWindow w;
w.show();
return a.exec();
}
Hier ist das LearnWindow.h
#ifndef LEARNWINDOW_H
#define LEARNWINDOW_H
#include <QMainWindow>
#include <transwindow.h>
namespace Ui {
class LearnWindow;
}
class LearnWindow : public QMainWindow
{
Q_OBJECT
public:
explicit LearnWindow(QWidget *parent = 0);
~LearnWindow();
private slots:
void on_pushButton_clicked();
private:
Ui::LearnWindow *ui;
TransWindow *winTrans;
public slots:
void openTrans();
};
#endif // LEARNWINDOW_H
Hier ist learnwindow.cpp
#include "learnwindow.h"
#include "ui_learnwindow.h"
LearnWindow::LearnWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::LearnWindow)
{
ui->setupUi(this);
}
LearnWindow::~LearnWindow()
{
delete ui;
}
void LearnWindow::openTrans()
{
winTrans = new TransWindow (this);
//winTrans->setWindowTitle("NewWin");
// winTrans->setWindowFlags(Qt::FramelessWindowHint | Qt::X11BypassWindowManagerHint);
//winTrans->setAttribute(Qt::WA_TranslucentBackground,true);
//winTrans->setAutoFillBackground(false);
//winTrans->setStyleSheet("background:transparent;");
winTrans->show();
}
void LearnWindow::on_pushButton_clicked()
{
openTrans();
}
Hier ist das transfenster.h
#ifndef TRANSWINDOW_H
#define TRANSWINDOW_H
#include <QDialog>
namespace Ui {
class TransWindow;
}
class TransWindow : public QDialog
{
Q_OBJECT
public:
explicit TransWindow(QWidget *parent = 0);
//setWindowFlags(windowFlags()| Qt::FramelessWindowHint);
~TransWindow();
private:
Ui::TransWindow *ui;
};
#endif // TRANSWINDOW_H
Und hier ist transwindow.cpp
#include "transwindow.h"
#include "ui_transwindow.h"
TransWindow::TransWindow(QWidget *parent) :
QDialog(parent),
ui(new Ui::TransWindow)
{
//setWindowTitle("NewWin");
//setWindowFlags(Qt::FramelessWindowHint);
//setAttribute(Qt::WA_TranslucentBackground,true);
ui->setupUi(this);
}
TransWindow::~TransWindow()
{
delete ui;
}
In den verschiedenen Quellcodes sehen Sie auskommentierte Zeilen, die die verschiedenen Dinge sind, die ich ausprobiert habe. Zum größten Teil besteht das Problem darin, dass das Programm normal ausgeführt wird, wenn ich eine der Zeilen auskommentiere, in denen versucht wird, "Qt :: FramlessWindowHint" festzulegen, aber nie ein neues Fenster öffnet, wenn ich auf die Schaltfläche auf der Hauptbenutzeroberfläche klicke.
Wenn ich eine der Zeilen auskommentiere, in denen ich "Qt :: WA_TranslucentBackground" festgelegt habe, wird das neue Fenster geöffnet, wenn die Schaltfläche in der Hauptbenutzeroberfläche gedrückt wird, der Hintergrund des neuen Fensters jedoch schwarz und nicht transparent ist.
Weitere relevante Informationen: linux: ubunto 12.04 qt 5.0.2 (64-bit) qt creator 2.7.1