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"