Qt中获取一个组件的顶级组件

阅读数:2 评论数:0

跳转到新版页面

分类

C/C++

正文

在 Qt 中,要获取一个组件(QWidget)的顶级组件,可以使用 QWidget 类的 window() 方法。这个方法返回当前组件的最顶层窗口(即,当前组件所在的窗口,如果它是顶级窗口)。如果当前组件本身就是顶级窗口,则返回它自己。

#include <QApplication>
#include <QWidget>
#include <QPushButton>
#include <QMessageBox>

class MyWidget : public QWidget {
    Q_OBJECT
public:
    MyWidget(QWidget *parent = nullptr) : QWidget(parent) {
        QPushButton *button = new QPushButton("Show Top-Level", this);
        connect(button, &QPushButton::clicked, this, &MyWidget::showTopLevelWidget);
        button->setGeometry(50, 50, 150, 30);
    }

private slots:
    void showTopLevelWidget() {
        QWidget *topLevel = this->window(); // 获取当前组件的顶级窗口
        QMessageBox::information(this, "Top-Level Window", 
                                 QString("Top-level window: %1").arg(topLevel->metaObject()->className()));
    }
};

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

    MyWidget widget;
    widget.setGeometry(100, 100, 300, 200);
    widget.show();

    return app.exec();
}

#include "main.moc"



相关推荐