2016-06-19 5 views
0

Я хочу запретить любое действие в главном окне, включая его закрытие. в то время как открытая ребеноккак отключить родительское окно на открытом дочернем элементе в Qt?

Стараюсь:

// child window 
Settings::Settings(QWidget *parent) : 
    QWidget(parent), 
    ui(new Ui::Settings) 
{ 
    ui->setupUi(this); 
    ((QWidget*)parent)->setEnabled(false); // or parent->setEnabled(false); 
... 

делает ошибку сегментации на Settings->show();

и я пытаюсь отправить сигнал из параметров конструктора/деструктора в MainClass слот

void MainClass::Enable(bool enable) 
{ 
    qDebug() << "detect signal enable"; // 
    this->setEnable(enable); 
} 

, но сигнал не был отправлен.

of the course я подключаю Settings до MainClass)). сигнал, излучающий произведения в любой другой функции Settings.

+1

«Я хочу запретить любое действие в главном окне, включая его закрытие» - обычно для этого нужно сделать настройки (модальный) QDialog. Но если родитель указывает на действительный объект, я не вижу, как это произойдет. (Запустите его в отладчике) –

ответ

2

Для дочерних окон было бы лучше, чтобы наследовать от QDialog (неQWidget), потому что первый один предназначен специально для диалогов. Из документов Qt:

Класс QDialog - это базовый класс диалоговых окон.

Метод, который вам нужен, это QDialog::exec(). Он откроет ваше диалоговое окно как modal window, которое заблокирует вход для других окон приложения, пока оно не будет закрыто.

+0

exec() отлично работает, спасибо –

Смежные вопросы