2010-06-03 17 views
19

Creo una instancia de QDialog y en la izquierda del botón 'x' (cerrar) también tengo '?' botón. ¿Cómo puedo desactivar eso? ?Qt - Desactivando el "?" De QDialog botón

+0

duplicado posible de [¿Cómo puedo ocultar/eliminar la botón de ayuda en la "barra de título" de un cuadro de diálogo Qt?] (http://stackoverflow.com/questions/81627/how-can-i-hide-delete-the-help-button-on-the-title-bar -of-a-qt-dialog) –

Respuesta

37

Cambiar las banderas de la ventana, por ejemplo en el constructor: "?"

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

Gracias, esto es lo que necesito. – Narek

+1

Intentar llamar a setWindowFlags() directamente no funcionó porque no se aplicó '~'. Otra solución implica usar el & = operador:

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

+1

En realidad, tuvimos el problema opuesto, nuestro cuadro de diálogo no tenía el botón Ayuda. Esta respuesta nos ayudó a buscar el problema. Gracias – Liz

5

A partir de la documentación de Qt 4.6 QDialog:

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

Construye un diálogo con los padres parent.

Un cuadro de diálogo es siempre un widget de nivel superior, pero si tiene un elemento primario, su ubicación predeterminada se centra en la parte superior del elemento primario. También compartirá la entrada de la barra de tareas de los padres.

Los indicadores de widget f se pasan al constructor QWidget. Si, por ejemplo, no desea un botón ** What's This en la barra de título del cuadro de diálogo **, pase Qt::WindowTitleHint | Qt::WindowSystemMenuHint en f.

Véase también QWidget::setWindowFlags().

+2

Para QDialog Qt :: WindowTitleHint | Los indicadores Qt :: WindowSystemMenuHint provocan un comportamiento anormal. – Narek

0

Si solo desea deshabilitar el botón, puede llamar al setEnabled(bool), pero dudo que eso sea lo que se está preguntando.

Si desea eliminar ese botón, ver más abajo:

QDialog se pretende utilizar un QDialogButtonBox que los botones que aparecen en el cuadro de diálogo. Puede utilizar los accesos disponibles en QDialogButtonBox para desactivar los botones que no desea (y habilitar otros).

Por ejemplo (a partir de la documentación vinculada a la anterior):

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); 

Si usted no es consciente de la caja de botones, supongo que el diseñador añadido automáticamente por usted y debe tener un nombre eso lo hace accesible. También debe haber propiedades (casillas de verificación) que pueda verificar para controlar a qué botones se puede acceder de forma predeterminada.

+0

Esta es una respuesta bien escrita, pero creo que se estaba refiriendo a los botones en la barra de título para el diálogo (decoraciones de ventana). –

+0

Oh. Creo que tienes razón, definitivamente entendí mal esa :(. –

Cuestiones relacionadas