5

私はPySideとQt全般にかなり慣れていません。ボタンが通常ある QMessageBox に QProgressBar を追加したいと思います。QMessageBox をサブクラス化してレイアウトを変更する方法があることを願っていますが、コードで Qt レイアウトを行ったことはなく、Qt Designer と pyside-uic を使用してすべてを行いました。

Qt Designer でコンセプトを作成しました。QMessageBox をサブクラス化することで、これと同様のことを行いたいと考えています。QProgressDialog を見てきましたが、柔軟性がありません。アイコンに QMessageBox Icon 列挙型を使用できるようにしたいと思います。

概念

4

2 に答える 2

8

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 )。ただし、閉じるボタンも無効になります...

于 2013-11-14T16:36:41.860 に答える
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)
于 2013-11-20T15:49:05.420 に答える