我对PySide很新,而且一般都是Qt。我想将QProgressBar添加到QMessageBox中,按钮通常在QMessageBox中。我希望有一些方法来继承QMessageBox并改变它的布局,但我从来没有在代码中做过Qt布局,我已经用Qt Designer和pyside-uic完成了所有工作。
我在Qt Designer中创建了一个概念,我希望通过对QMessageBox进行子类化来完成类似的操作。我看过QProgressDialog,但它太不灵活了。我希望能够使用QMessageBox图标枚举图标。
答案 0 :(得分:4)
QMessageBox
使用QGridLayout
。因此,您可以将QProgressBar
添加到其布局:
msgBox = QMessageBox( QMessageBox.Warning, "My title", "My text.", QMessageBox.NoButton )
# Get the layout
l = msgBox.layout()
# Hide the default button
l.itemAtPosition( l.rowCount() - 1, 0 ).widget().hide()
progress = QProgressBar()
# Add the progress bar at the bottom (last row + 1) and first column with column span
l.addWidget(progress,l.rowCount(), 0, 1, l.columnCount(), Qt.AlignCenter )
msgBox.show()
您也可以删除按钮msgBox.setStandardButtons( QMessageBox.NoButton )
。但关闭按钮也将被禁用......
答案 1 :(得分:0)
您可以随时将自己的布局添加到QProgressDialog。
layout = QtGui.QHBoxLayout()
self.setLayout(layout)
# layout.setContentsMargins(0, 0, 0, 0)
layout.setAlignment(QtCore.Qt.AlignTop)
icon = QtGui.QApplication.style().standardIcon(QtGui.QStyle.SP_FileIcon)
self.label = QtGui.QLabel()
self.label.setPixmap(icon.pixmap(16, 16))
self.label2 = QtGui.QLabel("My Label")
layout.addWidget(self.label)
layout.addWidget(self.label2)