【发布时间】:2016-08-25 19:11:33
【问题描述】:
界面右上角的X按钮我使用closeEvent方法。
要求是:
- 当我单击“关闭”时 -> 两个窗口(退出和主窗口)都将关闭。
- 当我点击“取消”-> 只有“退出”窗口会被关闭时,MainWindow 仍然停留在那里。
但是当我点击“取消”时,两个窗口都关闭了 -> 如何解决这个问题?
如何在“保存”和“关闭”之间移动“取消”按钮
这是我的代码
myclass.h
class MyClass : public QWidget
{
Q_OBJECT
public:
MyClass(QcgDatabase* db, int hostid, QWidget *parent = 0);
~MyClass();
public slots:
void save_clicked();
private:
Ui::MyClass ui;
QMessageBox* dialog = NULL;
void closeEvent(QCloseEvent *bar);
};
myclass.cpp
MyClass::MyClass(QcgDatabase * db, int hostid, QWidget *parent)
: QWidget(parent)
{
ui.setupUi(this);
.......
.......
}
void MyClass::closeEvent(QCloseEvent *bar)
{
if (!dialog) {
dialog = new QMessageBox(this);
}
dialog->setWindowModality(Qt::WindowModal);
dialog->setWindowTitle(QLatin1String("Exit"));
dialog->setText(QLatin1String("You have not saved data. Click \"Close\" to close the data table."));
dialog->setStandardButtons(QMessageBox::Save | QMessageBox::Cancel | QMessageBox::Close);
int result = dialog->exec();
if (result == QMessageBox::Save) {
save_clicked();
}
else if (result == QMessageBox::Cancel) {
dialog->close();
return;
}
else if (result == QMessageBox::Close) {
dialog->close();
}
bar->accept();
}
编辑:
好的,我修复了窗口的问题:
else if (result == QMessageBox::Cancel) {
bar->ignore();
return;
}
请帮我交换“关闭”和“取消”按钮的位置!
【问题讨论】: