V. Armando Solé is right. With this solution the tooltips come quickly in my computer. The corresponding PyQt code is :

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys
from PyQt4 import QtCore, QtGui, uic

class MainWindow(QtGui.QWidget):
   def __init__(self, parent=None):
       super(MainWindow, self).__init__(parent)
       self.setAttribute(QtCore.Qt.WA_DeleteOnClose)
       self.setAttribute(QtCore.Qt.WA_GroupLeader)
       self.menuI = QtGui.QPushButton("Menu")
       self.menuI.setToolTip("Click here...")
       self.menuI.setContextMenuPolicy(QtCore.Qt.ActionsContextMenu)

       mainLayout = QtGui.QHBoxLayout()
       mainLayout.addWidget(self.menuI)
       self.setLayout(mainLayout)
       self.resize(49,40)
       self.setWindowTitle("Qt menu")

       self.clicAct0 = QtGui.QAction("0", self)
       self.clicAct0.setToolTip("tooltip 0")
       self.connect(self.clicAct0, QtCore.SIGNAL("triggered()"), self.clic)

       self.clicAct1 = QtGui.QAction("1", self)
       self.clicAct1.setToolTip("tooltip 1")
       self.connect(self.clicAct1, QtCore.SIGNAL("triggered()"), self.clic)

       self.clicAct2 = QtGui.QAction("2", self)
       self.clicAct2.setToolTip("tooltip 2")
       self.connect(self.clicAct2, QtCore.SIGNAL("triggered()"), self.clic)

       menu0 = QtGui.QMenu(self)
       menu0.addAction(self.clicAct0)
       menu0.addAction(self.clicAct1)
       menu0.addAction(self.clicAct2)

       self.connect(menu0, QtCore.SIGNAL("hovered(QAction *)"),
       self._actionHovered)
menu1 = QtGui.QMenu(self)
       menu1.setTitle("submenu")
       menu1.setToolTip("tooltip submenu")

       menu1_0 = QtGui.QAction("subentry",self)
       menu1_0.setToolTip("tooltip subentry")

       self.connect(menu1_0, QtCore.SIGNAL("triggered()"), self.clic)
       menu1.addAction(menu1_0)
       menu0.addMenu(menu1)
       self.menuI.setMenu(menu0)

   def clic(self):
       print "clic"

   def _actionHovered(self, action):
       tip = action.toolTip()
       QtGui.QToolTip.showText(QtGui.QCursor.pos(), tip)

def main():
   app = QtGui.QApplication(sys.argv)
   locale = QtCore.QLocale.system().name()
   appTranslator = QtCore.QTranslator()
   app.setApplicationName(app.translate("main", "qtmenu"))

   form = MainWindow()
   form.show()
   app.exec_()

if __name__ == "__main__":
   main()





Andreas Pakulat wrote:
On 17.04.09 19:57:29, "V. Armando Solé" wrote:
Hi!

I encounter the same problem as the original poster. The tooltips of QActions in a QMenu are not shown.

Is there a solution?

You can set the statustip on the actions, which makes the text show up
in the statusbar (at least in KDE apps, maybe pure Qt needs some
additional hookup there). But AFAIK Qt simply doesn't support Tooltips
on menus at this point, possibly something they could add to 4.6.

Andreas
I get satisfactory results (if one does not mind to show ALWAYS a tooltip) with:

qt.QObject.connect(menu, qt.SIGNAL("hovered(QAction *)"), self._actionHovered)

   def _actionHovered(self, action):
       tip = action.toolTip()
       qt.QToolTip.showText(qt.QCursor.pos(), tip)

Surely there are cleaner workarounds ...

Armando


_______________________________________________
PyQt mailing list    PyQt@riverbankcomputing.com
http://www.riverbankcomputing.com/mailman/listinfo/pyqt





_______________________________________________
PyQt mailing list    PyQt@riverbankcomputing.com
http://www.riverbankcomputing.com/mailman/listinfo/pyqt

Reply via email to