gpt4 book ai didi

c++ - 如何要求输入密码才能关闭窗口?

转载 作者:太空宇宙 更新时间:2023-11-04 12:44:42 25 4
gpt4 key购买 nike

我想防止窗口关闭,因此当用户尝试这样做时,必须输入密码才能完成操作。无需输入用户名。

我知道如何拦截 QWidget::closeEvent,如本例所示:

void MainWindow::closeEvent(QCloseEvent *event) {
QMessageBox msgBox;
msgBox.setText(tr("Do you want to close the window?"));
msgBox.setStandardButtons(QMessageBox::Yes | QMessageBox::No);
msgBox.setDefaultButton(QMessageBox::No);
msgBox.setModal(true);
int ret = msgBox.exec();
if (ret == QMessageBox::Yes)
event->accept();
else
event->ignore();
}

问题是,该示例使用了 QMessageBox,它不允许输入文本,因此不符合我的需要。

如何修改代码提示输入密码?

最佳答案

解决方案

使用 QDialog 代替 QMessageBox 并根据您的需要调整它。

例子

这是我为您准备的示例,用于演示如何实现建议的解决方案:

void MainWindow::closeEvent(QCloseEvent *event) {
QDialog dialog(this);
auto *layoutDialog = new QVBoxLayout(&dialog);
auto *lineEdit = new QLineEdit(&dialog);
auto *label = new QLabel(tr("Enter password to close the window:"), &dialog);

lineEdit->setEchoMode(QLineEdit::Password);

layoutDialog->addWidget(label);
layoutDialog->addWidget(lineEdit);
layoutDialog->addStretch();

connect(lineEdit, &QLineEdit::editingFinished, [&]() {
dialog.done(lineEdit->text() == "11223344");
});

dialog.resize(250, 100);

if (dialog.exec())
event->accept();
else
event->ignore();
}

注意:当然,您必须想出一种更智能的方式来保证密码的安全。

关于c++ - 如何要求输入密码才能关闭窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52292171/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com