A QTreeView desde QListView

View: New views
11 Messages — Rating Filter:   Alert me  

A QTreeView desde QListView

by Jaime Robles :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Buenas,
Ando liado con la migración de QT3 a QT4 de KLog... Que no estoy  
perdiendo tiempo ni na... :-(

El caso es que me han quitado QListView para el uso que yo le daba y  
ahora creo que esa funcionalidad se da con QTreeView.

Mu pregunta... ¿Como se puede hacer para seleccionar un ítem con el  
botón derecho como se hacia en QListView y la señal  
rightbuttonclicked?

Estoy mirando y no veo nada...

Muchas gracias...

Jaime
_______________________________________________
Kde-devel-es mailing list
Kde-devel-es@...
https://mail.kde.org/mailman/listinfo/kde-devel-es

Re: A QTreeView desde QListView

by Aleix Pol-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Para ontrolar la seleccion, tienes que usar el QSelectionModel que te devuelve QAbstractItemModel::selectionModel().

si lo que quieres es interceptar el mouse, puedes usar QWidget::mouseReleaseEvent

Saludos!
Aleix

2009/8/27 Jaime Robles <jaime@...>
Buenas,
Ando liado con la migración de QT3 a QT4 de KLog... Que no estoy
perdiendo tiempo ni na... :-(

El caso es que me han quitado QListView para el uso que yo le daba y
ahora creo que esa funcionalidad se da con QTreeView.

Mu pregunta... ¿Como se puede hacer para seleccionar un ítem con el
botón derecho como se hacia en QListView y la señal
rightbuttonclicked?

Estoy mirando y no veo nada...

Muchas gracias...

Jaime
_______________________________________________
Kde-devel-es mailing list
Kde-devel-es@...
https://mail.kde.org/mailman/listinfo/kde-devel-es


_______________________________________________
Kde-devel-es mailing list
Kde-devel-es@...
https://mail.kde.org/mailman/listinfo/kde-devel-es

Re: A QTreeView desde QListView

by Eloy Cuadra :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hola,

Jaime, como te apuntó Aleix, el sistema view/model de Qt4 es muy flexible.
Pero si lo único que quieres es migrar la funcionalidad de QListView de Qt3 a
Qt4 sin tener que retocar mucho código, yo no usaría un QTreeView, sino un
QTreeWidget.

De este modo, dispones de las típicas señales itemClicked, itemDoubleClicked,
etc. que trabajan con QTreeWidgetItem.

Como estas señales no distinguen entre los distintos botones, para saber cuál
se ha pulsado debes usar QApplication::mouseButtons() en el slot que responda
a las anteriores señales.

Un saludo,

Eloy Cuadra


El domingo, 30 de agosto de 2009, Aleix Pol escribió:

> Para ontrolar la seleccion, tienes que usar el QSelectionModel que te
> devuelve QAbstractItemModel::selectionModel().
>
> si lo que quieres es interceptar el mouse, puedes usar
> QWidget::mouseReleaseEvent
>
> Saludos!
> Aleix
>
> 2009/8/27 Jaime Robles <jaime@...>
>
> > Buenas,
> > Ando liado con la migración de QT3 a QT4 de KLog... Que no estoy
> > perdiendo tiempo ni na... :-(
> >
> > El caso es que me han quitado QListView para el uso que yo le daba y
> > ahora creo que esa funcionalidad se da con QTreeView.
> >
> > Mu pregunta... ¿Como se puede hacer para seleccionar un ítem con el
> > botón derecho como se hacia en QListView y la señal
> > rightbuttonclicked?
> >
> > Estoy mirando y no veo nada...
> >
> > Muchas gracias...
> >
> > Jaime
> > _______________________________________________
> > Kde-devel-es mailing list
> > Kde-devel-es@...
> > https://mail.kde.org/mailman/listinfo/kde-devel-es
>
_______________________________________________
Kde-devel-es mailing list
Kde-devel-es@...
https://mail.kde.org/mailman/listinfo/kde-devel-es

Re: A QTreeView desde QListView

by Eloy Cuadra :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hola,

El martes, 1 de septiembre de 2009, Eloy Cuadra escribió:
> Como estas señales no distinguen entre los distintos botones, para saber
> cuál se ha pulsado debes usar QApplication::mouseButtons() en el slot que
> responda a las anteriores señales.

Bueno, esto no es correcto, ya que QApplication::mouseButtons() siempre te
devolverá 0 si lo usas en los slots conectados a las señales itemClicked e
itemDoubleClicked.

Para solucionar este pequeño problema debes conectar además la señal
itemPressed a otro slot donde captures el estado de los botones del ratón con
QApplication::mouseButtons() y mantengas en caché el QTreeWidgetItem y la
columna. Posteriormente, en el slot donde respondas a itemClicked, comprueba
que el QTreeWidgetItem y la columna se corresponden con los valores que
mantenías en caché antes de usar el estado capturado de los botones del ratón.

También se pueden capturar y usar del mismo modo los modificadores del
teclado.

Esto funciona correctamente (lo uso en una aplicación). Aún así, sigo teniendo
problemas para distinguir entre itemClicked e itemDoubleClicked, ya que todo
doble clic implica un clic. ¿Alguna sugerencia?

Un saludo,
--
Eloy Cuadra
_______________________________________________
Kde-devel-es mailing list
Kde-devel-es@...
https://mail.kde.org/mailman/listinfo/kde-devel-es

Parent Message unknown Re: A QTreeView desde QListView

by Jaime Robles :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Buenas,

Me equivoqué, lo que estoy tratando de usar es el QTreeWidget, no el
QTreeView O:-) aun así mis problemas son los mismos.

> Jaime, como te apuntó Aleix, el sistema view/model de Qt4 es muy flexible.
> Pero si lo único que quieres es migrar la funcionalidad de QListView de
> Qt3 a Qt4 sin tener que retocar mucho código, yo no usaría un QTreeView,
> sino un QTreeWidget.
Si... creo que ese es el bueno pero... ¿por qué dices que "si lo único que
quiero es migrar la funcionalidad"? ¿Es mejor el QTreeView que el
QTreeWidget?

> De este modo, dispones de las típicas señales itemClicked,
> itemDoubleClicked,
> etc. que trabajan con QTreeWidgetItem.
Tendré que mirarme todo esto...

> Como estas señales no distinguen entre los distintos botones, para saber
> cuál
> se ha pulsado debes usar QApplication::mouseButtons() en el slot que
> responda a las anteriores señales.
Uff!
Con lo FACIL que era antes... ahora a leer, leer, leer, ... X'DDD


A los que sabeis... ¿Merece la pena la migración de Qt4?
Tengo que migrar si quiero seguir manteniendo KLog pero... ¿Voy a ganar
algo? No se yo...


Gracias (y a Aleix también, que estaba esperando a tener un momento para
leer con detalle el mensaje y dar las gracias!)


_______________________________________________
Kde-devel-es mailing list
Kde-devel-es@...
https://mail.kde.org/mailman/listinfo/kde-devel-es

Re: A QTreeView desde QListView

by Sergio Cambra-4 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On Martes, 1 de Septiembre de 2009 16:24:30 Jaime Robles escribió:

> Buenas,
>
> Me equivoqué, lo que estoy tratando de usar es el QTreeWidget, no el
> QTreeView O:-) aun así mis problemas son los mismos.
>
> > Jaime, como te apuntó Aleix, el sistema view/model de Qt4 es muy
> > flexible. Pero si lo único que quieres es migrar la funcionalidad de
> > QListView de Qt3 a Qt4 sin tener que retocar mucho código, yo no usaría
> > un QTreeView, sino un QTreeWidget.
>
> Si... creo que ese es el bueno pero... ¿por qué dices que "si lo único que
> quiero es migrar la funcionalidad"? ¿Es mejor el QTreeView que el
> QTreeWidget?
>
> > De este modo, dispones de las típicas señales itemClicked,
> > itemDoubleClicked,
> > etc. que trabajan con QTreeWidgetItem.
>
> Tendré que mirarme todo esto...
>
> > Como estas señales no distinguen entre los distintos botones, para saber
> > cuál
> > se ha pulsado debes usar QApplication::mouseButtons() en el slot que
> > responda a las anteriores señales.
>
> Uff!
> Con lo FACIL que era antes... ahora a leer, leer, leer, ... X'DDD

¿Has visto este hilo? En el cuarto mensaje dan una solucion: la señal
customContextMenuRequested
http://doc.trolltech.com/4.5/qwidget.html#customContextMenuRequested

>
>
> A los que sabeis... ¿Merece la pena la migración de Qt4?
> Tengo que migrar si quiero seguir manteniendo KLog pero... ¿Voy a ganar
> algo? No se yo...
>
>
> Gracias (y a Aleix también, que estaba esperando a tener un momento para
> leer con detalle el mensaje y dar las gracias!)
>
>
> _______________________________________________
> Kde-devel-es mailing list
> Kde-devel-es@...
> https://mail.kde.org/mailman/listinfo/kde-devel-es
_______________________________________________
Kde-devel-es mailing list
Kde-devel-es@...
https://mail.kde.org/mailman/listinfo/kde-devel-es

Re: A QTreeView desde QListView

by Eloy Cuadra :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hola,

El martes, 1 de septiembre de 2009, Jaime Robles escribió:
> Si... creo que ese es el bueno pero... ¿por qué dices que "si lo único que
> quiero es migrar la funcionalidad"? ¿Es mejor el QTreeView que el
> QTreeWidget?

No es que una sea mejor que otra: son dos aproximaciones distintas. En Qt4 se
prefiere el sistema model/view para representar datos en widgets. Esta es una
de las grandes diferencias con Qt3. En Qt4, QTreeView no permite trabajar con
elementos QTreeWidgetItem (como permitían las clases de Qt3). En lugar de
ello, ahora trabaja con elementos QModelIndex. QTreeWidget hereda de
QTreeView, pero permite trabajar con elementos QTreeWidgetItem en lugar de con
elementos QModelIndex. Por eso decía que si querías migrar lo que ya tenías
hecho para Qt3 sin romperte demasiado la cabeza... pues eso :-)


> A los que sabeis... ¿Merece la pena la migración de Qt4?
> Tengo que migrar si quiero seguir manteniendo KLog pero... ¿Voy a ganar
> algo? No se yo...

Bueno, no es que sepa demasiado sobre esto, pero si no migras la aplicación a
Qt4 vas a seguir necesitando las bibliotecas de Qt3/KDE3, que pronto van a
quedar obsoletas (si es que no lo están ya).

Un saludo,
--
Eloy Cuadra
_______________________________________________
Kde-devel-es mailing list
Kde-devel-es@...
https://mail.kde.org/mailman/listinfo/kde-devel-es

Re: A QTreeView desde QListView

by Aleix Pol-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

2009/9/1 Jaime Robles <jaime@...>
Buenas,

Me equivoqué, lo que estoy tratando de usar es el QTreeWidget, no el
QTreeView O:-) aun así mis problemas son los mismos.

> Jaime, como te apuntó Aleix, el sistema view/model de Qt4 es muy flexible.
> Pero si lo único que quieres es migrar la funcionalidad de QListView de
> Qt3 a Qt4 sin tener que retocar mucho código, yo no usaría un QTreeView,
> sino un QTreeWidget.
Si... creo que ese es el bueno pero... ¿por qué dices que "si lo único que
quiero es migrar la funcionalidad"? ¿Es mejor el QTreeView que el
QTreeWidget?

En teoría, QTreeView escala mejor, porque separas los datos (el modelo) de la vista.
En la practica supongo que QTreeView sólo es mejor si tienes pensado aprender a usar los modelos. En cualquier caso, QTreeView+QStandardModel te dan algo bastante parecido a QTreeWidget. Es lo que yo uso en estos casos.
 
> De este modo, dispones de las típicas señales itemClicked,
> itemDoubleClicked,
> etc. que trabajan con QTreeWidgetItem.
Tendré que mirarme todo esto...

Para sacar un menu contextual, usa la señal customContextMenuRequested, asi Qt se encarga de sacarlo cuando sea necesario (notese que no tiene porque ser el boton derecho el correcto, dependiendo de las preferencias del usuario). Si usas esto, recuerda modificar el contextMenuPolicy.


> Como estas señales no distinguen entre los distintos botones, para saber
> cuál
> se ha pulsado debes usar QApplication::mouseButtons() en el slot que
> responda a las anteriores señales.
Uff!
Con lo FACIL que era antes... ahora a leer, leer, leer, ... X'DDD

No deberías necesitar usar QApplication::mouseButtons para nada.

A los que sabeis... ¿Merece la pena la migración de Qt4?
Tengo que migrar si quiero seguir manteniendo KLog pero... ¿Voy a ganar
algo? No se yo...

Sí. Tienes que passarte a Qt4.
 

Gracias (y a Aleix también, que estaba esperando a tener un momento para
leer con detalle el mensaje y dar las gracias!)
:)


_______________________________________________
Kde-devel-es mailing list
Kde-devel-es@...
https://mail.kde.org/mailman/listinfo/kde-devel-es


_______________________________________________
Kde-devel-es mailing list
Kde-devel-es@...
https://mail.kde.org/mailman/listinfo/kde-devel-es

Re: A QTreeView desde QListView

by Jaime Robles-4 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Buenas,

Siguiendo el consejo de Aleix...

Estoy tratando de detectar si he pulsado el ratón con el botón derecho
para sacar el típico menú contextual, he usado el mouseReleaseEvent, como
aparece en la documentación   (estoy usando un ejemplo de la documentación
de Qt "Scribble") pero...

Consigo detectar si uso ratón derecho o izquierdo sólo cuando pulso sobre
zonas "genéricas" del widget principal, no cuando pulso sobre un
qtreewidget...
¿Cómo puedo definir el mouseReleaseEvent de un qtreewidget que defino en
el fichero ".ui" y luego uso desde el .cpp?

Por si alguien tiene curuiosidad de cómo anda klog (ya por fin he
conseguido migrarlo casi del todo) teneis el SVN aquí:
http://svn.berlios.de/wsvn/klog/trunk/src/#_trunk_src_

Gracias.

> Para controlar la seleccion, tienes que usar el QSelectionModel que te
> devuelve QAbstractItemModel::selectionModel().
>
> si lo que quieres es interceptar el mouse, puedes usar
> QWidget::mouseReleaseEvent
>
> Saludos!
> Aleix
>
> 2009/8/27 Jaime Robles <jaime@...>
>
>> Buenas,
>> Ando liado con la migración de QT3 a QT4 de KLog... Que no estoy
>> perdiendo tiempo ni na... :-(
>>
>> El caso es que me han quitado QListView para el uso que yo le daba y
>> ahora creo que esa funcionalidad se da con QTreeView.
>>
>> Mu pregunta... ¿Como se puede hacer para seleccionar un ítem con el
>> botón derecho como se hacia en QListView y la señal
>> rightbuttonclicked?
>>
>> Estoy mirando y no veo nada...
>>
>> Muchas gracias...
>>
>> Jaime
>> _______________________________________________
>> Kde-devel-es mailing list
>> Kde-devel-es@...
>> https://mail.kde.org/mailman/listinfo/kde-devel-es
>>
> _______________________________________________
> Kde-devel-es mailing list
> Kde-devel-es@...
> https://mail.kde.org/mailman/listinfo/kde-devel-es
>


--
Un saludo,
        Jaime Robles, EA4TV
        jaime@...

Visita:
   http://jaime.robles.es

_______________________________________________
Kde-devel-es mailing list
Kde-devel-es@...
https://mail.kde.org/mailman/listinfo/kde-devel-es

Re: A QTreeView desde QListView

by Eloy Cuadra :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hola,

El jueves, 8 de octubre de 2009, Jaime Robles escribió:

> Estoy tratando de detectar si he pulsado el ratón con el botón derecho
> para sacar el típico menú contextual, he usado el mouseReleaseEvent, como
> aparece en la documentación   (estoy usando un ejemplo de la documentación
> de Qt "Scribble") pero...
>
> Consigo detectar si uso ratón derecho o izquierdo sólo cuando pulso sobre
> zonas "genéricas" del widget principal, no cuando pulso sobre un
> qtreewidget...
> ¿Cómo puedo definir el mouseReleaseEvent de un qtreewidget que defino en
> el fichero ".ui" y luego uso desde el .cpp?

Yo me olvidaría de mouseReleaseEvent para eso y me ocuparía de conectar la
señal customContextMenuRequested del QTreeWidget con una función tuya que
muestre el menú de contexto:

  connect( qtreewidget, SIGNAL( customContextMenuRequested( const QPoint& ) ),
           this, SLOT( itemContextMenu( const QPoint& ) ) );

Y luego usa algo como:

void MyAppWindowView::itemContextMenu( const QPoint& pos )
{
  QMenu menu(this);
  menu.setTitle("context");
  // añade las acciones pertinentes aquí

  menu.exec(QCursor::pos());
}

Un saludo,
--
Eloy Cuadra
_______________________________________________
Kde-devel-es mailing list
Kde-devel-es@...
https://mail.kde.org/mailman/listinfo/kde-devel-es

Re: A QTreeView desde QListView

by Aleix Pol-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Bueno... puedes hacer que el widget no responda al evento. Para eso, puedes hacer algo tipo:
void MyTree::someEvent(QEvent* e)
{
e->ignore();
}

Ahora bien, esto es liarse bastante y me hace pensar que estas usando el menu contextual como si fuera un menu normal.
Fijate que se llama contextual porque depende del contexto, si el contexto es toda la aplicacion, ya no depende, entonces va al menú principal... no?

Saludos!

2009/10/8 Jaime Robles <jaime@...>
Buenas,

Siguiendo el consejo de Aleix...

Estoy tratando de detectar si he pulsado el ratón con el botón derecho
para sacar el típico menú contextual, he usado el mouseReleaseEvent, como
aparece en la documentación   (estoy usando un ejemplo de la documentación
de Qt "Scribble") pero...

Consigo detectar si uso ratón derecho o izquierdo sólo cuando pulso sobre
zonas "genéricas" del widget principal, no cuando pulso sobre un
qtreewidget...
¿Cómo puedo definir el mouseReleaseEvent de un qtreewidget que defino en
el fichero ".ui" y luego uso desde el .cpp?

Por si alguien tiene curuiosidad de cómo anda klog (ya por fin he
conseguido migrarlo casi del todo) teneis el SVN aquí:
http://svn.berlios.de/wsvn/klog/trunk/src/#_trunk_src_

Gracias.

> Para controlar la seleccion, tienes que usar el QSelectionModel que te
> devuelve QAbstractItemModel::selectionModel().
>
> si lo que quieres es interceptar el mouse, puedes usar
> QWidget::mouseReleaseEvent
>
> Saludos!
> Aleix
>
> 2009/8/27 Jaime Robles <jaime@...>
>
>> Buenas,
>> Ando liado con la migración de QT3 a QT4 de KLog... Que no estoy
>> perdiendo tiempo ni na... :-(
>>
>> El caso es que me han quitado QListView para el uso que yo le daba y
>> ahora creo que esa funcionalidad se da con QTreeView.
>>
>> Mu pregunta... ¿Como se puede hacer para seleccionar un ítem con el
>> botón derecho como se hacia en QListView y la señal
>> rightbuttonclicked?
>>
>> Estoy mirando y no veo nada...
>>
>> Muchas gracias...
>>
>> Jaime
>> _______________________________________________
>> Kde-devel-es mailing list
>> Kde-devel-es@...
>> https://mail.kde.org/mailman/listinfo/kde-devel-es
>>
> _______________________________________________
> Kde-devel-es mailing list
> Kde-devel-es@...
> https://mail.kde.org/mailman/listinfo/kde-devel-es
>


--
Un saludo,
       Jaime Robles, EA4TV
       jaime@...

Visita:
  http://jaime.robles.es

_______________________________________________
Kde-devel-es mailing list
Kde-devel-es@...
https://mail.kde.org/mailman/listinfo/kde-devel-es


_______________________________________________
Kde-devel-es mailing list
Kde-devel-es@...
https://mail.kde.org/mailman/listinfo/kde-devel-es