效果图:
功能拆分图:
代码:
QtStubOption.cpp
QtSubOption::QtSubOption(QWidget *parent): QLabel(parent)
{ui.setupUi(this);m_GuiShow = SHOWGUI;setMouseTracking(true);m_PicStatus[SHOWGUI] = ":/QtGuiApplication3/tile";m_PicStatus[HIDEGUI] = ":/QtGuiApplication3/tile2";m_PicStatus[HIDEGUIMOVE] = ":/QtGuiApplication3/tile2_move";m_PicStatus[HIDEGUIPRESS] = ":/QtGuiApplication3/tile2_pressed";QPixmap pixmapTitle(m_PicStatus[SHOWGUI].c_str());pixmapTitle = pixmapTitle.scaled(208, 24, Qt::KeepAspectRatio);setPixmap(pixmapTitle);setWindowFlags(Qt::FramelessWindowHint);setAttribute(Qt::WA_TranslucentBackground);setAlignment(Qt::AlignTop);setFixedSize(208, 24);m_ParentApp = (QtGuiApplication3 *)parent;
}QtSubOption::~QtSubOption()
{
}void QtSubOption::mouseReleaseEvent(QMouseEvent * ev)
{//点击标题栏的消息if (m_GuiShow == SHOWGUI){m_ParentApp->buttomWidget->hide();m_GuiShow = HIDEGUI;QPixmap pixmapTitle(m_PicStatus[HIDEGUI].c_str());pixmapTitle = pixmapTitle.scaled(208, 24, Qt::KeepAspectRatio);setPixmap(pixmapTitle);}else{m_ParentApp->buttomWidget->show();m_GuiShow = SHOWGUI;QPixmap pixmapTitle(m_PicStatus[SHOWGUI].c_str());pixmapTitle = pixmapTitle.scaled(208, 24, Qt::KeepAspectRatio);setPixmap(pixmapTitle);}
}void QtSubOption::mouseMoveEvent(QMouseEvent * ev)
{
}void QtSubOption::mousePressEvent(QMouseEvent * ev)
{if (m_GuiShow == HIDEGUI){QPixmap pixmapTitle(m_PicStatus[HIDEGUIPRESS].c_str());pixmapTitle = pixmapTitle.scaled(208, 24, Qt::KeepAspectRatio);setPixmap(pixmapTitle);}
}void QtSubOption::enterEvent(QEvent *)
{if (m_GuiShow == HIDEGUI){//OutputDebugStringA("1111");QPixmap pixmapTitle(m_PicStatus[HIDEGUIMOVE].c_str());pixmapTitle = pixmapTitle.scaled(208, 24, Qt::KeepAspectRatio);setPixmap(pixmapTitle);}
}void QtSubOption::leaveEvent(QEvent *)
{if (m_GuiShow == HIDEGUI){//OutputDebugStringA("2222");QPixmap pixmapTitle(m_PicStatus[HIDEGUI].c_str());pixmapTitle = pixmapTitle.scaled(208, 24, Qt::KeepAspectRatio);setPixmap(pixmapTitle);}
}
QtGuiApplication3.cpp
QtGuiApplication3::QtGuiApplication3(QWidget *parent): QMainWindow(parent)
{ui.setupUi(this);QtSubOption *tileLabel = new QtSubOption(this);QtSubOption *tileLabel2 = new QtSubOption(this);buttomWidget = new QWidget(this);buttomWidget->setFixedSize(208, 250);QPushButton *modalBtn2 = new QPushButton(this);modalBtn2->setFixedSize(48, 48);modalBtn2->setStyleSheet(QLatin1String("QPushButton{border-image: url(:/QtGuiApplication3/buttom1);}\n""QPushButton:pressed{border-image: url(:/QtGuiApplication3/buttom1_press);}"));QPushButton *modalBtn3 = new QPushButton(this);modalBtn3->setStyleSheet(QLatin1String("QPushButton{border-image: url(:/QtGuiApplication3/buttom2);}\n""QPushButton:pressed{border-image: url(:/QtGuiApplication3/buttom2_press);}"));modalBtn3->setFixedSize(48, 48);QPushButton *modalBtn4 = new QPushButton(this);modalBtn4->setStyleSheet(QLatin1String("QPushButton{border-image: url(:/QtGuiApplication3/buttom3);}\n""QPushButton:pressed{border-image: url(:/QtGuiApplication3/buttom3_press);}"));modalBtn4->setFixedSize(48, 48);QGridLayout *pGridLayoutButtom = new QGridLayout(this);pGridLayoutButtom->setSpacing(20);pGridLayoutButtom->addWidget(modalBtn2, 0 , 0);pGridLayoutButtom->addWidget(modalBtn3, 0, 1);pGridLayoutButtom->addWidget(modalBtn4, 0, 2);pGridLayoutButtom->setAlignment(Qt::AlignTop);//buttonWidget->setWindowFlags(Qt::FramelessWindowHint);//buttonWidget->setAttribute(Qt::WA_TranslucentBackground);buttomWidget->setStyleSheet("background-color: rgb(90, 90, 90)");buttomWidget->setLayout(pGridLayoutButtom);QWidget *pWidget = new QWidget(this);QVBoxLayout *pBoxLayout = new QVBoxLayout(this);pBoxLayout->setSpacing(0);pBoxLayout->addWidget(tileLabel);pBoxLayout->addWidget(buttomWidget);pBoxLayout->addSpacing(10);pBoxLayout->addWidget(tileLabel2);pBoxLayout->addStretch();pWidget->setLayout(pBoxLayout);QScrollArea *scrollArea = new QScrollArea(this);scrollArea->setGeometry(0, 0, 225, 500);scrollArea->setBackgroundRole(QPalette::Dark);scrollArea->setWidget(pWidget);scrollArea->setAlignment(Qt::AlignCenter);scrollArea->setFixedWidth(225);scrollArea->setWidgetResizable(true);QGridLayout *mainLayout = new QGridLayout(this);QGridLayout *leftLayout = new QGridLayout();leftLayout->addWidget(scrollArea);QGridLayout *rightLayout = new QGridLayout();QPushButton *OkBtn = new QPushButton(tr(u8"确定"));rightLayout->addWidget(OkBtn);mainLayout->addLayout(leftLayout, 0, 0);mainLayout->addLayout(rightLayout, 0, 1);QDialog *dlgWidget = new QDialog;dlgWidget->setStyleSheet("background-color: rgb(90, 90, 90)");setCentralWidget(dlgWidget);dlgWidget->setLayout(mainLayout);
}