Qt выделите серым цветом и отключите все действия в MainWindow

Скажем, после запуска приложения Qt, есть ли способ отобразить серое главное окно и отключить все виджеты (кнопки / флажки / и т. Д.) - невозможно щелкнуть. Когда пользователь открывает файл или выполняет какую-либо процедуру инициализации, главное окно становится серым и активируются все виджеты. Это возможно в Qt?

3 ответа

Да. Просто позвони QWidget::setEnabled(false) отключить окно / виджет и QWidget::setEnabled(true) чтобы включить его. http://qt-project.org/doc/qt-4.8/qwidget.html

Кстати, документация Qt очень полная. Просто ищите там, и вы легко найдете ответы на многие вопросы.

В моем программном обеспечении перед созданием нового виджета я отключил все кнопки в родительском окне следующим образом:

void MainWindow::disableAllButtons(bool toBeEnabled){    
    QList<QPushButton *> buttonsList = this->findChildren<QPushButton *>();
    for (int i = 0; i < buttonsList.count(); i++){
        buttonsList.at(i)->setEnabled(toBeEnabled);
    }
}

Конечно, мне пришлось вызывать это снова при закрытии виджета, чтобы снова включить кнопки. Думаю, его можно адаптировать для отключения / включения других видов виджетов. Работает на QT 4.8.

Добавьте серую метку наложения, размер которой равен вашему главному окну. Конечно, не забывайте setEnabled(false),

Другие вопросы по тегам