91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

c++彈窗如何實現動畫效果

c++
小樊
113
2024-08-13 00:50:49
欄目: 編程語言

要在C++中實現彈窗動畫效果,可以使用一些圖形庫或者GUI庫來幫助實現。以下是一個簡單的示例,使用了Qt庫來創建一個帶有動畫效果的彈窗:

#include <QtWidgets>

class PopupWidget : public QWidget
{
public:
    PopupWidget(QWidget *parent = nullptr) : QWidget(parent)
    {
        setWindowFlags(Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint);
        setAttribute(Qt::WA_TranslucentBackground);

        animation.setTargetObject(this);
        animation.setPropertyName("geometry");
        animation.setDuration(500);

        connect(&animation, &QPropertyAnimation::finished, this, &PopupWidget::close);
    }

    void showPopup()
    {
        QRect rect = QApplication::desktop()->availableGeometry();
        setGeometry(rect.width() - 200, rect.height() - 100, 200, 100);
        setWindowOpacity(0);
        show();
        animation.setStartValue(QRect(rect.width() - 200, rect.height() - 100, 0, 0));
        animation.setEndValue(QRect(rect.width() - 200, rect.height() - 100, 200, 100));
        animation.setEasingCurve(QEasingCurve::OutBack);
        animation.start();
    }

protected:
    void paintEvent(QPaintEvent *event) override
    {
        QPainter painter(this);
        painter.setRenderHint(QPainter::Antialiasing);
        painter.setBrush(Qt::white);
        painter.setPen(Qt::black);
        painter.drawRoundedRect(rect(), 10, 10);
        painter.drawText(rect(), Qt::AlignCenter, "Hello, World!");
    }

private:
    QPropertyAnimation animation;
};

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    QPushButton button("Show Popup");
    PopupWidget popup;

    QObject::connect(&button, &QPushButton::clicked, [&popup]() {
        popup.showPopup();
    });

    QVBoxLayout layout;
    layout.addWidget(&button);
    layout.setContentsMargins(10, 10, 10, 10);

    QWidget window;
    window.setLayout(&layout);
    window.setWindowTitle("Popup Animation");
    window.show();

    return app.exec();
}

在這個示例中,我們創建了一個自定義的PopupWidget類,用于顯示彈窗。當點擊按鈕時,調用showPopup函數展示彈窗,并使用QPropertyAnimation類實現彈窗出現的動畫效果。在paintEvent函數中,我們繪制了一個簡單的圓角矩形彈窗,并在中間顯示了一段文本。

請注意,這個示例使用了Qt庫,需要在項目中包含Qt的頭文件和鏈接Qt庫。您也可以使用其他圖形庫或GUI庫來實現類似的效果。

0
阿克陶县| 卢湾区| 台东市| 平乡县| 且末县| 隆安县| 和顺县| 乃东县| 布尔津县| 伊金霍洛旗| 洛阳市| 梁河县| 枞阳县| 张家界市| 苗栗市| 兴安盟| 哈尔滨市| 西城区| 楚雄市| 长武县| 临高县| 天气| 湄潭县| 汝阳县| 达拉特旗| 永登县| 湛江市| 卢湾区| 布尔津县| 始兴县| 玛纳斯县| 长葛市| 香河县| 恩平市| 怀柔区| 万年县| 新竹县| 营口市| 罗田县| 江津市| 黔西县|