我正在編寫一個應用程序,返回一個值與QWidget :: exec,但似乎我無法正確關閉類(我需要調用Gate ::〜門顯式刪除類)和QApplication :: exec永遠不會退出。 門是我aplication的主窗口QApplication不關閉後,我關閉所有QWidget
Gate::Gate(List *opciones, QWidget *parent):
QDialog(parent),
ui(new Ui::Gate)
{
ParseOption *ctmp;
int retvalue,i;
ui->setupUi(this);
validUser = false;
setAttribute(Qt::WA_QuitOnClose);
errno = 0; // no se de donde sale el error...
[...code...]
QObject::connect(ui->closeButton,&QAbstractButton::clicked,this,&QDialog::close);
QObject::connect(ui->passwordField,&QLineEdit::textChanged,this,&hellGate::enableopenButton);
QObject::connect(ui->openButton,&QAbstractButton::clicked,this,&hellGate::certificateUser);
QObject::connect(this,&hellGate::validateUser,this,&QDialog::done);
}
當MI程序調用:
emit validateUser(QDialog::Accepted);
然後退出,但門在接近不調用析構函數,我稱這種現象主要而是用標誌WA_QuitonClose應該自動關閉:
int main(int argc, char *argv[])
{
QWidgetList list;
QApplication a(argc, argv);
Gate w(configOptions);
if(w.exec() == QDialog::Accepted) {
w.~Gate();
qDebug("enter");
} else {
qDebug("No enter");
}
list = a.topLevelWidgets();
if(!list.isEmpty()) {
for(int i = 0;i<list.size();i++) {
qDebug("window: %i",list[i]->close());
}
} else {
qDebug("ALL closed");
}
return a.exec();
}
輸出是「輸入」(和「如果我打電話給〜門」全部關閉「)。
我正在嘗試從程序退出行「return a.exec()」。 如果我沒有破壞門顯式a.topLevelWidget返回一個QWidget列表(我想這是門)。 我需要調用w.exec(),因爲我需要一個門返回值,w.show()是聲明:
void show();
我需要調用w.exec和a.exec結束時窗W (班級門)關閉。 我做錯了什麼?
P.D對不起,如果文字很難理解,我不太懂英語。
是門應用程序的主窗口?你能否澄清爲什麼你需要明確地調用它的析構函數?通常你調用主窗口的show()然後exec()爲應用程序 – demonplus