QWidget 关闭自己

1.概要

connect(closeButton, &QPushButton::clicked, this, &QWidget::close);

 connect(okButton, &QPushButton::clicked, this, &QDialog::accept); // accept 也会调用 close

2.内容

在 Qt 框架中,QWidget 是所有用户界面对象的基类。如果你想让一个 QWidget(或其子类,如 QDialogQMainWindow 等)关闭自己,通常的做法是调用它的 close() 方法。这个方法会发送一个关闭事件给窗口部件,触发相关的关闭逻辑,并最终从屏幕上移除该窗口部件。

以下是一些具体场景中如何实现这一点的例子:

1. 在 QPushButton 的点击事件中关闭窗口

假设你有一个 QPushButton,当点击这个按钮时,你想关闭包含它的窗口。

#include <QApplication>
#include <QWidget>
#include <QPushButton>
#include <QVBoxLayout>

class MyWidget : public QWidget {
    Q_OBJECT

public:
    MyWidget(QWidget *parent = nullptr) : QWidget(parent) {
        QVBoxLayout *layout = new QVBoxLayout(this);
        QPushButton *closeButton = new QPushButton("关闭", this);
        layout->addWidget(closeButton);

        connect(closeButton, &QPushButton::clicked, this, &QWidget::close);
    }
};

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

    MyWidget w;
    w.show();

    return app.exec();
}

在这个例子中,我们创建了一个 MyWidget 类,它继承自 QWidget。在这个类的构造函数中,我们设置了一个布局和一个按钮。我们使用 connect 函数将按钮的 clicked 信号连接到 QWidget 的 close 槽,这样当按钮被点击时,窗口就会关闭。

2. 在 QDialog 中关闭对话框

如果你使用的是 QDialog,操作是类似的。你可能会有一个确定按钮,点击后关闭对话框。

#include <QApplication>
#include <QDialog>
#include <QPushButton>
#include <QVBoxLayout>

class MyDialog : public QDialog {
    Q_OBJECT

public:
    MyDialog(QWidget *parent = nullptr) : QDialog(parent) {
        QVBoxLayout *layout = new QVBoxLayout(this);
        QPushButton *okButton = new QPushButton("确定", this);
        layout->addWidget(okButton);

        connect(okButton, &QPushButton::clicked, this, &QDialog::accept); // accept 也会调用 close
    }
};

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

    MyDialog d;
    d.exec(); // 对于对话框,通常使用 exec() 而不是 show()

    return app.exec();
}

在这个例子中,我们使用了 QDialog 的 accept() 方法,它不仅关闭了对话框,还可以表示对话框被用户以“接受”的方式关闭(例如,在模态对话框中)。类似地,你也可以使用 reject() 方法来表示对话框被用户以“拒绝”的方式关闭。

总结

  • 使用 close() 方法可以直接关闭任何 QWidget 或其子类。
  • 对于 QDialog,可以使用 accept() 或 reject() 来关闭对话框,并同时表示用户的选择。
  • 使用信号和槽机制(connect)来连接按钮点击事件到关闭操作。

这样,你就可以根据需要控制 QWidget 或其子类窗口的关闭了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值