#include #include #include #include #include #include #include class Popup : public QFrame { public: Popup(QWidget *parent = nullptr) : QFrame(parent, Qt::Popup) { QVBoxLayout *layout = new QVBoxLayout(this); textEdit = new QTextEdit(this); layout->addWidget(textEdit); setFixedSize(300, 200); } private: QTextEdit *textEdit; }; class MainWindow : public QDialog { public: MainWindow() { setFixedSize(300, 300); QVBoxLayout *layout = new QVBoxLayout(this); button = new QPushButton("Popup", this); connect(button, &QPushButton::clicked, this, &MainWindow::showPopup); layout->addWidget(button); popup = new Popup(this); } private slots: void showPopup() { popup->move(button->mapToGlobal(button->rect().bottomLeft())); popup->show(); } private: QPushButton *button; Popup *popup; }; int main(int argc, char *argv[]) { QApplication app(argc, argv); MainWindow window; window.show(); return app.exec(); }