2013-12-15 25 views
0

其簡單的事情,但我想不出爲什麼ontop的另一個QLabel的不顯示疊加文字,顯示使用QLabel ontop的另一個QLabel顯示圖像的文本已經成爲這樣的痛苦

這裏是代碼我有一個設置了一個文本到另一個現有的標籤顯示圖像

def _buildUi(self): 
    self.label = QtGui.QLabel() 
    self.overlayExifText = QtGui.QLabel(self.label) 
    self.overlayExifText.setSizePolicy(QtGui.QSizePolicy.Ignored, 
     QtGui.QSizePolicy.Ignored) 
    self.overlayExifText.setStyleSheet("QLabel { color : blue; }") 
    self.overlayExifText.setAlignment(QtCore.Qt.AlignTop) 
    self.label.setBackgroundRole(QtGui.QPalette.Base) 
    self.label.setSizePolicy(QtGui.QSizePolicy.Ignored, 
     QtGui.QSizePolicy.Ignored) 
    self.label.setAlignment(QtCore.Qt.AlignCenter) 
    self.setCentralWidget(self.label) 

這裏覆蓋標籤是更新文本當前圖像的方法

def showImageByPath(self, path): 
    if path: 
     self.overlayExifText.setText("\n".join(list(utils.getExifData((path))))) 
     image = QtGui.QImage(path) 
     pp = QtGui.QPixmap.fromImage(image) 
     self.label.setPixmap(pp.scaled(
       self.label.size(), 
       QtCore.Qt.KeepAspectRatio, 
       QtCore.Qt.SmoothTransformation)) 

只有文字的第一個字母可見。我也嘗試設置一些默認文本,然後顯示帶有黑色背景的文本,然後該區域還顯示了上面第二種方法產生的更多數據。對於完整的代碼看看這個repo

+0

這裏可以正常工作。 –

+0

你能否拉動回購看到問題? –

+0

@san,'QLabel'是顯示小部件而不是容器。將QLabel看作另一個Qlabel的父項是不好的! – qurban

回答

1

要顯示的圖像和文字同時下面的方法可以是有用的:

  • 圖像設置爲背景圖片標籤:

    label.setStyleSheet("background-image: url(:/1.png);")

  • 設置要在圖像頂部顯示的文字:

    label.setText("text") ..