QT - Отключение Qdialog's «?» кнопка
Вопрос
Я создаю экземпляр QDialog и слева от кнопки «X» (закрытие), которую я тоже имею? » кнопка. Как я могу отключить это '?' ?
Решение
Измените флаги окон, например, в конструкторе:
this->setWindowFlags(this->windowFlags() & ~Qt::WindowContextHelpButtonHint);
Другие советы
Из документации QT 4.6 QDialog:
QDialog::QDialog ( QWidget * parent = 0, Qt::WindowFlags f = 0 )
Создает диалог с родителем
parent
.Диалог всегда является виджетом на верхнем уровне, но если у него есть родитель, его местоположение по умолчанию сосредоточено поверх родителя. Он также поделится записью панели задач родителей.
Флаги виджетов
f
передаются вQWidget
конструктор. Если, например, ты не хочешь ** что это кнопка в заглавном панели диалога **, пройтиQt::WindowTitleHint | Qt::WindowSystemMenuHint
вf
.
Смотрите также QWidget::setWindowFlags()
.
Если вы просто хотите отключить кнопку, вы можете позвонить setEnabled(bool)
, но я сомневаюсь, что это спрашивает.
Если вы хотите удалить эту кнопку, см. Ниже:
QDialog
предназначен для использования QDialogButtonBox
как кнопки, которые появляются в диалоге. Вы можете использовать доступные аксессу Qdialogbuttonbox Чтобы отключить кнопки, которые вам не нужны (а также включить других).
Например (из документации, связанной с вышеуказанным):
findButton = new QPushButton(tr("&Find"));
findButton->setDefault(true);
moreButton = new QPushButton(tr("&More"));
moreButton->setCheckable(true);
moreButton->setAutoDefault(false);
buttonBox = new QDialogButtonBox(Qt::Vertical);
buttonBox->addButton(findButton, QDialogButtonBox::ActionRole);
buttonBox->addButton(moreButton, QDialogButtonBox::ActionRole);
Если вы не знаете о кнопке, я предполагаю, что дизайнер автоматически добавил его для вас, и у него должно быть имя, которое делает его доступным. Также должны быть свойства (флажки), которые вы можете проверить, чтобы контролировать, какие кнопки доступны по умолчанию.