Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 10, 2010 08:47:27

villager
От:
Зарегистрирован: 2008-11-04
Сообщения: 111
Репутация: +  0  -
Профиль   Отправить e-mail  

QTableWidget-не работает clicked

не отрабатывает 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_()



Офлайн

#2 Авг. 10, 2010 11:07:24

poltergeist
От:
Зарегистрирован: 2007-02-28
Сообщения: 522
Репутация: +  0  -
Профиль   Отправить e-mail  

QTableWidget-не работает clicked

Дело в том, что если в 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)

Офлайн

#3 Авг. 10, 2010 15:56:58

villager
От:
Зарегистрирован: 2008-11-04
Сообщения: 111
Репутация: +  0  -
Профиль   Отправить e-mail  

QTableWidget-не работает clicked

СПАСИБО!!!



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version