make floating icon translucent and frame less
This commit is contained in:
28
src/icon.cpp
28
src/icon.cpp
@ -1,25 +1,26 @@
|
||||
#include <QPainter>
|
||||
|
||||
#include "icon.h"
|
||||
#include "config.h"
|
||||
|
||||
FloatingIcon::FloatingIcon( const QPixmap &icon, QMenu *popup, QWidget *parent, const char *name)
|
||||
: QDialog( parent ) {
|
||||
FloatingIcon::FloatingIcon( const QString &icon, QMenu *popup, QWidget *parent, const char *name)
|
||||
: QDialog( parent ), icon(icon) {
|
||||
this->setObjectName(name);
|
||||
setAttribute(Qt::WA_QuitOnClose);
|
||||
setAttribute(Qt::WA_TranslucentBackground);
|
||||
setWindowFlags(Qt::FramelessWindowHint);
|
||||
setWindowTitle(QJOYPAD_NAME);
|
||||
QPalette palette;
|
||||
palette.setBrush(backgroundRole(), QBrush(icon));
|
||||
setPalette(palette);
|
||||
//setPaletteBackgroundPixmap(icon);
|
||||
pop = popup;
|
||||
|
||||
setFixedSize(64,64);
|
||||
}
|
||||
|
||||
void FloatingIcon::mousePressEvent( QMouseEvent* e ) {
|
||||
void FloatingIcon::mousePressEvent( QMouseEvent* event ) {
|
||||
//if it was the right mouse button,
|
||||
if (e->button() == Qt::RightButton) {
|
||||
if (event->button() == Qt::RightButton) {
|
||||
//bring up the popup menu.
|
||||
pop->popup( e->globalPos() );
|
||||
e->accept();
|
||||
pop->popup( event->globalPos() );
|
||||
event->accept();
|
||||
}
|
||||
else {
|
||||
//otherwise, treat it as a regular click.
|
||||
@ -27,7 +28,8 @@ void FloatingIcon::mousePressEvent( QMouseEvent* e ) {
|
||||
}
|
||||
}
|
||||
|
||||
void FloatingIcon::closeEvent( QCloseEvent* e ) {
|
||||
emit closed();
|
||||
e->accept();
|
||||
void FloatingIcon::paintEvent( QPaintEvent* event ) {
|
||||
Q_UNUSED(event);
|
||||
QPainter painter(this);
|
||||
painter.drawPixmap(0, 0, icon);
|
||||
}
|
||||
|
@ -12,14 +12,15 @@
|
||||
class FloatingIcon : public QDialog {
|
||||
Q_OBJECT
|
||||
public:
|
||||
FloatingIcon( const QPixmap &icon, QMenu *popup = 0, QWidget *parent = 0, const char *name = 0);
|
||||
FloatingIcon( const QString &icon, QMenu *popup = 0, QWidget *parent = 0, const char *name = 0);
|
||||
signals:
|
||||
void closed();
|
||||
void clicked();
|
||||
protected:
|
||||
void mousePressEvent( QMouseEvent* e );
|
||||
void closeEvent( QCloseEvent* e );
|
||||
void paintEvent(QPaintEvent* event);
|
||||
void mousePressEvent(QMouseEvent* event);
|
||||
private:
|
||||
QMenu* pop;
|
||||
QPixmap icon;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
@ -29,9 +29,10 @@ LayoutManager::LayoutManager( bool useTrayIcon, const QString &devdir, const QSt
|
||||
}
|
||||
//or make a floating icon
|
||||
else {
|
||||
FloatingIcon* icon = new FloatingIcon(QPixmap(QJOYPAD_ICON64),&trayMenu,0,"tray");
|
||||
connect(icon, SIGNAL( clicked()), this, SLOT( iconClick()));
|
||||
connect(icon, SIGNAL( closed()), qApp, SLOT( quit()));
|
||||
FloatingIcon* icon = new FloatingIcon(QJOYPAD_ICON64,&trayMenu,0,"tray");
|
||||
connect(icon, SIGNAL(clicked()), this, SLOT(iconClick()));
|
||||
connect(icon, SIGNAL(rejected()), qApp, SLOT(quit()));
|
||||
connect(icon, SIGNAL(accepted()), qApp, SLOT(quit()));
|
||||
icon->show();
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user