簡體   English   中英

qt 中的彈出窗口小部件

[英]Popup widget in qt

如何在 qt 中創建它?

當您單擊按鈕時 - 應顯示彈出窗口小部件,其寬度應為 = 按鈕寬度。 如果主 window(主窗體)拖動到屏幕上的另一個位置 - 彈出小部件應連續跟隨按鈕(必須附加到按鈕的底部邊框)。

點擊圖片前:
點擊圖片之前

點擊圖片后:
點擊圖片后

創建小部件,不要放置任何布局,將其父級設置為按鈕的父級(我們稱之為“主機”),將 window 標志設置為Qt::Window | Qt::FramelessWindowHint Qt::Window | Qt::FramelessWindowHint

mPopup = new QWidget(this);
mPopup->setWindowFlags(Qt::Window | Qt::FramelessWindowHint);

覆蓋主機的resizeEventmoveEvent並使用按鈕的幾何形狀調整彈出窗口的幾何形狀。

void Host::adjustPopup() {
    if (!mPopup->isVisible()) {
        return;
    }
    QRect rect = mButton->geometry();
    QPoint bottomLeft = this->mapToGlobal(rect.bottomLeft());
    mPopup->setGeometry(QRect(bottomLeft, QSize(rect.width(),200)));
}

void Host::resizeEvent(QResizeEvent *event)
{
    QWidget::resizeEvent(event);
    adjustPopup();
}

void Host::moveEvent(QMoveEvent *event)
{
    QWidget::moveEvent(event);
    adjustPopup();
}

完整來源:按鈕彈出

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM