Форум сайта python.su
не отрабатывает clicked для ячеек, в которые установлен QLabel с html тегами
в чем проблема?
как решить малой кровью?
from PyQt4.QtGui import *
from PyQt4.QtCore import *
import sys
app = QApplication(sys.argv)
tbl = QTableWidget( 5, 5)
tbl.setItem(0, 0, QTableWidgetItem(u""))
tbl.setItem(1, 0, QTableWidgetItem(u""))
tbl.setCellWidget(0, 0, QLabel(u"1<B>11</B>1"))
tbl.setCellWidget(1, 0, QLabel(u"123"))
def tblclicked(index):
print "!", index.row()
tbl.clicked.connect(tblclicked)
tbl.show()
app.exec_()
Офлайн
Дело в том, что если в QLabel находится RichText, то события от мыши обрабатываются лейблом и видимо до QTableWidget уже не доходят. Это сделано для того, чтобы если в лейбле будет сcылка, то можно будет по ней кликнуть (<a href=“foo”>bar</a>). Убрать эту фичу можно таким способом:
from PyQt4.QtGui import *
from PyQt4.QtCore import *
import sys
app = QApplication(sys.argv)
tbl = QTableWidget( 5, 5)
tbl.setItem(0, 0, QTableWidgetItem(u""))
tbl.setItem(1, 0, QTableWidgetItem(u""))
l = QLabel(u"1<B>11</B>1")
l.setTextInteractionFlags(Qt.NoTextInteraction)
tbl.setCellWidget(0, 0, l)
tbl.setCellWidget(1, 0, QLabel(u"123"))
def tblclicked(index):
print "!", index.row()
tbl.clicked.connect(tblclicked)
tbl.show()
app.exec_()
Отредактировано (Авг. 10, 2010 11:11:37)
Офлайн
СПАСИБО!!!
Офлайн