День добрый, необходим совет по решению проблемы указанной в конце поста.
C++ (Qt)
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
this->setWindowFlags(Qt::FramelessWindowHint);
this->setAttribute(Qt::WA_TranslucentBackground);
this->setAttribute(Qt::WA_NoSystemBackground);
// ...
}
Класс своей кнопки, она меняет изображение в зависимости от состояния. Пока форма у нас перед глазами - всё работает нормально.
.h :
C++ (Qt)
class CImageButton : public QLabel
{
Q_OBJECT
public:
CImageButton(QString strBasePicture, QWidget *parent = 0, Qt::WindowFlags f = 0);
QString m_strBasePicture;
signals:
void clicked();
protected:
void enterEvent(QEvent *event);
void leaveEvent(QEvent *event);
void mousePressEvent(QMouseEvent *event);
void mouseReleaseEvent(QMouseEvent *event);
};
.cpp :
C++ (Qt)
CImageButton::CImageButton(QString strBasePicture, QWidget *parent, Qt::WindowFlags f) : QLabel (parent, f)
{
m_strBasePicture = strBasePicture;
this->setPixmap(QPixmap(m_strBasePicture+".png"));
}
void CImageButton::enterEvent(QEvent *event)
{
this->setPixmap(QPixmap(m_strBasePicture+"_active.png"));
}
void CImageButton::leaveEvent(QEvent *event)
{
this->setPixmap(QPixmap(m_strBasePicture+".png"));
}
void CImageButton::mousePressEvent(QMouseEvent *event)
{
this->setPixmap(QPixmap(m_strBasePicture+"_hold.png"));
}
void CImageButton::mouseReleaseEvent(QMouseEvent *event)
{
emit clicked();
this->setPixmap(QPixmap(m_strBasePicture+"_active.png"));
}
Проблема:
1) Скрываем форму нажатием кнопки "
Hide";
В результате вызывается:
C++ (Qt)
void MainWindow::HideButton_clicked()
{
this->showMinimized();
}
2) При нажатии на кнопку открытия окна в таскбаре (условно видим проблему с этого момента), форма возвращается к нам с кнопкой в состоянии "
_hold.png" и все переопределенные методы перестают работать для любого экземпляра класса "
CImageButton" на ней.
Если закомментировать "
this->setAttribute(Qt::WA_TranslucentBackground);", то всё работает как должно, но нет прозрачного фона.