Вопрос

У меня есть проблема, я называю моим QDialog, как это в главном ():

app.setQuitOnLastWindowClosed(true);
splashWin startWin;

if(!startWin.exec())
{
    // Rejected
    return EXIT_SUCCESS;
}

// Accepted, retrieve the data
startWin.myData...
.

и в QDialog у меня есть следующий код:

splashWin::splashWin(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::splashWin)
{
    ui->setupUi(this);
    this->setWindowFlags(this->windowFlags() & ~Qt::WindowContextHelpButtonHint);
    this->setAttribute(Qt::WA_QuitOnClose);
}

void splashWin::on_OK_clicked()
{
    // Prepare my data
    ..


    accept();
}


void splashWin::show_About_Window()
{
    MyAboutWindow win;
    setVisible(false); // <- this causes the application to send a "reject" signal!! why??
    win.exec();
    setVisible(true);
}
.

Это довольно простой код, проблема в том, что STAVIBIBE (FALSE) или SHITE () строка показывает окно о окне о том, что, как только это окно отклонено диалогового окна «Отклонить», и мое приложение закрывает выполнение .

// Rejected
return EXIT_SUCCESS;
.

Линии основных ()

Почему это?В документации я прочитал, что скрыть () не должен ничего вернуть.Я использую Qt 4.8.2

Это было полезно?

Решение

QDialog::setVisible(false), прерывает свой собственный контур событий, но вы можете явно позвонить в базовую версию функции, QWidget::setVisible, вместо этого, чтобы избежать этого поведения:

void splashWin::show_About_Window()
{
    MyAboutWindow win;
    QWidget::setVisible(false);
    win.exec();
    setVisible(true);
}
.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top