ich habe eine Frage und ein Problem mit dem QTableWidget:
die Frage ist, wie ich die Größe der Tabelle dynamisch an die Größe des Widgets anpassen kann. Die Tabelle enthält nur zwei Spalten, von denen sich die erste anpassen sollte.
Das zweite Problem ist (mal wieder) ein Bug, von dem ich nicht weiß, ob er wirklich ein Qt-Problem ist oder ob es in der Python-Anbindung liegt. Der folgende Beispielcode:
Code: Alles auswählen
import threading, sys, time
from PyQt4 import QtGui
app = QtGui.QApplication(sys.argv)
main = QtGui.QMainWindow()
table = QtGui.QTableWidget(1, 1, main)
main.setCentralWidget(table)
class MyThread(threading.Thread):
def run(self):
time.sleep(3)
table.setCellWidget(0, 0, QtGui.QLabel('Hallo Welt', main))
MyThread().start()
main.show()
app.exec_()
manchmal stürzt das Programm auch einfach ab. Wenn es nicht abstürzt, wird das QLabel auch nicht innerhalb der Tabelle angezeigt (was es sollte), sondern in einem Extra-Fenster. Wenn ich auf den Extra-Thread verzichte, funktioniert es wie gewünscht -- allerdings brauche ich den Extra-Thread (die Tabellenergänzung ist Resultat einer längeren Rechnung, die hier mit sleep() simuliert wird).Qt hat geschrieben:QObject::setParent: Cannot set parent, new parent is in a different thread
QPixmap: It is not safe to use pixmaps outside the GUI thread
QObject::installEventFilter(): Cannot filter events for objects in a different thread.
QCoreApplication::sendPostedEvents: Cannot send posted events for objects in another thread
Ist es ein Fehler, die Tabelle aus einem eigenen Thread heraus zu ändern? Oder ist das ein Bug in Qt? In PyQt? Oder ein Denkfehler von mir?
Qt-Versionen sind 4.4.3 und 4.5 unter Linux (kubuntu und openSUSE).
Viele Grüße
Ole