2010-06-03 6 views
19

Я создаю экземпляр QDialog и слева от кнопки «x» (закрыть), у меня также есть?? кнопка. Как я могу отключить это? ?Qt - Отключение QDialog's?? button

+0

Возможный дубликат [Как я могу скрыть/удалить help в строке заголовка Qt Dialog?] (http://stackoverflow.com/questions/81627/how-can-i-hide-delete-the-help-button-on-the-title-bar -of-a-qt-dialog) –

ответ

37

Измените флаги окна, например, в конструкторе: «?»

this->setWindowFlags(this->windowFlags() & ~Qt::WindowContextHelpButtonHint); 
+0

Спасибо, это то, что мне нужно. – Narek

+1

Попытка вызова setWindowFlags() напрямую не работала, потому что '~' не применялся. & = operator:

 Qt::WindowFlags flags = windowFlags(); flags &= ~Qt::WindowContextHelpButtonHint; setWindowFlags(flags); 

+1

На самом деле у нас была противоположная проблема, в нашем диалоговом окне не было кнопки справки. Этот ответ помог нам найти проблему. Спасибо – Liz

5

Из QDialog документации Qt 4.6:

QDialog::QDialog (QWidget * parent = 0, Qt::WindowFlags f = 0) 

Создает диалог с родителем parent.

Диалог всегда представляет собой виджет верхнего уровня, но если он имеет родителя, его местоположение по умолчанию находится по центру родителя. Он также поделится записью панели задач родителя.

Флаги виджета f передаются на конструктор QWidget. Если, например, вы не хотите использовать ** Что это такое кнопка в строке заголовка диалогового окна **, перейдите Qt::WindowTitleHint | Qt::WindowSystemMenuHint в f.

См. Также QWidget::setWindowFlags().

+2

Для QDialog Qt :: WindowTitleHint | Флаги Qt :: WindowSystemMenuHint вызывают ненормальное поведение. – Narek

0

Если вы просто хотите отключить кнопку, вы можете позвонить 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); 

Если вы не знаете коробки кнопки, я думаю, что дизайнер автоматически добавил его для вас, и он должен иметь имя что делает его доступным. Также должны быть свойства (флажки), которые вы можете проверить, чтобы контролировать, какие кнопки доступны по умолчанию.

+0

Это хорошо написанный ответ, но я думаю, что он имел в виду кнопки в строке заголовка для диалога (декорации окон). –

+0

Ох. Я думаю, что вы правы - я определенно неправильно понял, что один :( –

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

  • Нет связанных вопросов^_^