I'm rather new to PySide, and Qt in general. I want to add a QProgressBar to a QMessageBox where the buttons would usually be. I'm hoping that there's some way to subclass QMessageBox and change it's layout, but I've never done a Qt layout in code, I've done everything with Qt Designer and pyside-uic.
I've created a concept in Qt Designer, I'd like to have something similar to this done by sub-classing QMessageBox. I've looked at QProgressDialog, but it's too inflexible. I'd like to be able to use the QMessageBox Icon enum for the icon.
QMessageBox
uses a QGridLayout
. So, you can add your QProgressBar
to its layout:
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()
You can also remove the buttons msgBox.setStandardButtons( QMessageBox.NoButton )
. But the close button will be disabled, too...
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With