Привет, столкнулся с проблемой портирования замечательного примера tux с qt3 на qt4. Почитал гугл, ответа не нашел, проблем много но основная это то что не грузиться картинка нормально в бэкграунд окна, привожу код на питоне.
qt3:
#!/usr/bin/env python
import sys
from qt import *
class Tux(QWidget):
def __init__(self,parent=None,name=None,f=0):
QWidget.__init__(self)
#self.setWFlags(f)
def main(argv):
app = QApplication(argv)
fn = QString("tux.png")
if not QFile.exists(fn):
sys.exit(1)
img = QImage(fn)
p = QPixmap()
p.convertFromImage(img)
if not p.mask():
if img.hasAlphaBuffer():
bm = QBitmap()
bm = img.createAlphaMask()
p.setMask(bm)
else:
bm = QBitmap()
bm = img.createHeuristicMask()
p.setMask(bm)
w = Tux(0,0,Qt.WStyle_Customize|Qt.WStyle_NoBorder)
w.setPaletteBackgroundPixmap(p)
w.setFixedSize(p.size())
if p.mask():
w.setMask(p.mask())
w.show()
app.setMainWidget(w)
app.exec_loop()
if __name__ == "__main__":
main(sys.argv)
Далее код на qt4:
#!/usr/bin/env python
import sys
from PyQt4.QtGui import *
from PyQt4.QtCore import *
class Tux(QWidget):
def __init__(self, parent=None):
QWidget.__init__(self,parent)
def main(argv):
app = QApplication(argv)
fn = QString("tux.png")
if not QFile.exists(fn):
sys.exit(1)
img = QImage(fn)
p = QPixmap()
p.fromImage(img) # возможно проблема здесь
if not p.mask():
if img.hasAlphaBuffer():
bm = QBitmap()
bm = img.createAlphaMask()
p.setMask(bm)
else:
bm = QBitmap()
bm = img.createHeuristicMask()
p.setMask(bm)
w = Tux()
palette = QPalette()
palette.setBrush(w.backgroundRole(), QBrush(p))
w.setPalette(palette)
#w.setFixedSize(p.size())
if p.mask():
w.setMask(p.mask())
w.show()
sys.exit(app.exec_())
if __name__ == "__main__":
main(sys.argv)
Очень интересует создания окошка произвольной формы, не писать же на третьем qt изза этого.