qt点击按钮弹出新窗口,如果窗口存在则不弹出
时间: 2023-11-04 08:01:55 浏览: 222
可以通过以下步骤实现:
1. 创建一个新窗口类,比如`NewWindow`,并在其构造函数中设置窗口的属性和控件布局。
2. 在主窗口类中创建一个`NewWindow`对象的指针,并在按钮的槽函数中判断该指针是否为空。
3. 如果指针为空,则新建一个`NewWindow`对象并显示出来;如果指针不为空,则说明窗口已经存在,直接将其显示出来即可。
以下是示例代码:
```cpp
// newwindow.h
class NewWindow : public QDialog
{
Q_OBJECT
public:
explicit NewWindow(QWidget *parent = nullptr);
private:
QLabel *label;
};
// newwindow.cpp
NewWindow::NewWindow(QWidget *parent) : QDialog(parent)
{
setWindowTitle(tr("New Window"));
setFixedSize(200, 100);
label = new QLabel(tr("Hello, world!"), this);
label->setAlignment(Qt::AlignCenter);
}
// mainwindow.h
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = nullptr);
private slots:
void on_pushButton_clicked();
private:
NewWindow *newWindow;
};
// mainwindow.cpp
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), newWindow(nullptr)
{
setWindowTitle(tr("Main Window"));
QPushButton *button = new QPushButton(tr("New Window"), this);
setCentralWidget(button);
connect(button, &QPushButton::clicked, this, &MainWindow::on_pushButton_clicked);
}
void MainWindow::on_pushButton_clicked()
{
if (!newWindow) {
newWindow = new NewWindow(this);
}
newWindow->show();
}
```
阅读全文