QT 点击按钮 弹出新窗口 示例代码
时间: 2025-06-06 11:10:00 浏览: 42
### QT中点击按钮后弹出新窗口的示例代码
在QT框架中,可以通过信号与槽机制实现按钮点击后弹出新窗口的功能。以下是一个完整的示例代码,展示了如何创建一个主窗口,并在点击按钮时打开一个新的窗口。
#### 主窗口类定义
首先定义一个主窗口类 `MainWindow`,它继承自 `QMainWindow`[^1]。在该类中,添加一个按钮并连接其点击信号到槽函数。
```cpp
#include <QApplication>
#include <QMainWindow>
#include <QPushButton>
#include <QVBoxLayout>
#include <QWidget>
class MainWindow : public QMainWindow {
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = nullptr) : QMainWindow(parent) {
QWidget *centralWidget = new QWidget(this);
QVBoxLayout *layout = new QVBoxLayout(centralWidget);
QPushButton *button = new QPushButton("Open New Window", centralWidget);
layout->addWidget(button);
setCentralWidget(centralWidget);
connect(button, &QPushButton::clicked, this, &MainWindow::onButtonClicked);
}
private slots:
void onButtonClicked() {
NewWindow *newWindow = new NewWindow;
newWindow->show();
}
};
```
#### 新窗口类定义
接下来定义一个新的窗口类 `NewWindow`,它同样继承自 `QMainWindow`。这个类可以包含任何需要展示的内容。
```cpp
class NewWindow : public QMainWindow {
Q_OBJECT
public:
explicit NewWindow(QWidget *parent = nullptr) : QMainWindow(parent) {
QWidget *centralWidget = new QWidget(this);
QVBoxLayout *layout = new QVBoxLayout(centralWidget);
QLabel *label = new QLabel("This is a new window!", centralWidget);
layout->addWidget(label);
setCentralWidget(centralWidget);
}
};
```
#### 主函数
最后,在主函数中创建应用程序实例和主窗口实例,并进入事件循环。
```cpp
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
MainWindow window;
window.resize(400, 300);
window.show();
return app.exec();
}
```
以上代码展示了如何通过点击按钮打开一个新的窗口。`MainWindow` 类中的按钮点击信号被连接到 `onButtonClicked` 槽函数,该函数负责创建并显示新的窗口实例。
### 注意事项
- 确保在项目文件(`.pro`)中添加 `QT += widgets`,以便正确编译。
- 如果需要管理新窗口的生命周期,可以考虑使用 `QPointer` 或其他智能指针来避免内存泄漏。
阅读全文
相关推荐


















