📅  最后修改于: 2023-12-03 15:07:21.946000             🧑  作者: Mango
在很多现代的应用程序中,用户希望能够通过点击一个关闭按钮来关闭某个窗口、面板或者弹窗。本文将介绍如何在你的程序中添加一个「即显示关闭图标」功能,以便让用户更加方便地关闭窗口。
在打开一个窗口或面板时,通常会有一个标题栏,包括窗口的标题和其他控制按钮(如最小化、最大化、还原等)。如果你希望添加关闭按钮,可以按照以下步骤来实现:
// Java / Swing
JFrame frame = new JFrame("My Window");
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
// C# / WinForms
Form form = new Form();
form.Text = "My Window";
form.ControlBox = true; // 显示标题栏按钮
form.MaximizeBox = false; // 禁止最大化
form.MinimizeBox = false; // 禁止最小化
form.FormBorderStyle = FormBorderStyle.FixedSingle; // 固定大小
form.StartPosition = FormStartPosition.CenterScreen; // 居中显示
Button closeButton = new Button();
closeButton.Text = "关闭";
closeButton.AutoSize = true;
closeButton.Anchor = AnchorStyles.Top | AnchorStyles.Right;
closeButton.Click += (sender, args) => form.Close();
form.Controls.Add(closeButton);
// C++ / Qt
QMainWindow *window = new QMainWindow();
window->setWindowTitle("My Window");
QAction *closeAction = new QAction(QIcon(":/icons/close.png"), "Close", window);
closeAction->setShortcut(QKeySequence(QKeySequence::Close));
closeAction->setStatusTip("Close this window");
QObject::connect(closeAction, SIGNAL(triggered()), window, SLOT(close()));
window->addAction(closeAction);
// Java / Swing
frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
int option = JOptionPane.showConfirmDialog(frame,
"确定要退出吗?", "确认",
JOptionPane.YES_NO_OPTION);
if (option == JOptionPane.YES_OPTION){
frame.dispose();
}
}
});
// C# / WinForms
form.FormClosing += (sender, args) => {
DialogResult result = MessageBox.Show("确定要退出吗?", "确认",
MessageBoxButtons.YesNo, MessageBoxIcon.Question);
args.Cancel = (result == DialogResult.No);
};
// C++ / Qt
window->setAttribute(Qt::WA_DeleteOnClose);
QObject::connect(window, SIGNAL(closeEvent(QCloseEvent *)),
window, SLOT(confirmClose()));
void QMainWindow::confirmClose()
{
int response = QMessageBox::question(this,
tr("确认退出"),
tr("确定要退出这个对话框?"),
QMessageBox::Yes | QMessageBox::No,
QMessageBox::No);
if (response == QMessageBox::Yes) {
close();
}
}
// Java / Swing
JPanel contentPane = new JPanel(new BorderLayout());
contentPane.add(closeButton, BorderLayout.NORTH);
frame.setContentPane(contentPane);
// C# / WinForms
form.Controls.Add(closeButton);
// C++ / Qt
window->setCentralWidget(new QLabel("Hello, world!"));
window->menuBar()->addAction(closeAction);
当上述步骤完成后,用户将看到一个在标题栏中显示的关闭按钮,并且在单击它时,程序将显示一个提示框或者执行其他类似的操作,以确认用户是否要关闭窗口。
在本文中,我们介绍了如何在你的程序中添加一个「即显示关闭图标」功能,以便让用户更加方便地关闭窗口。这种功能通过在标题栏中添加一个标准的「关闭」按钮并在单击它时捕获事件来实现。如果你要开发一个现代化的应用程序,这个功能应该是一个必不可少的组成部分。