Найти - Пользователи
Полная версия: QTableWidget-не работает clicked
Начало » GUI » QTableWidget-не работает clicked
1
villager
не отрабатывает 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_()
poltergeist
Дело в том, что если в 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_()
villager
СПАСИБО!!!
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB