答案 0 :(得分:2)
下面的代码执行类似的操作,而不是直接在组框的边框上绘图。
import sys
from PyQt4 import QtGui
from PyQt4 import QtCore
class GROUPBOX (QtGui.QWidget):
def __init__(self):
super(GROUPBOX, self).__init__()
self.initUI()
def initUI(self):
self.pushButton = QtGui.QPushButton(self)
self.pushButton.setGeometry(QtCore.QRect(480, 10, 50, 20))
self.pushButton.setObjectName ('pushButton')
self.pushButton.setText ('Delete')
self.pushButton.clicked.connect (self.delete)
self.createGroupBox ()
self.resize(586, 335)
self.show()
def createGroupBox (self) :
self.groupBox = QtGui.QGroupBox(self)
self.groupBox.setGeometry(QtCore.QRect(25, 25, 500, 300))
self.groupBox.setObjectName ('groupBox')
self.groupBox.setTitle ('Group Box')
self.groupBox.show ()
def delete (self) :
currentGroupBox = self.findChildren (QtGui.QGroupBox)
if currentGroupBox :
for eachGroupBox in currentGroupBox :
eachGroupBox.deleteLater()
self.pushButton.setText ('Create')
else :
self.createGroupBox ()
self.pushButton.setText ('Delete')
def main():
app = QtGui.QApplication(sys.argv)
ex = GROUPBOX()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
答案 1 :(得分:1)
我想出了如何使用QCheckBox实现非常接近我想要的东西:
我是通过重新使用QCheckBox完成的,如下所示:
import sys
from PySide import QtGui, QtCore
class DeleteButtonExample(QtGui.QWidget):
def __init__(self):
super(DeleteButtonExample, self).__init__()
delete_gb = QtGui.QGroupBox('QGroupBox with Delete Button')
group_box_vbl = QtGui.QVBoxLayout()
group_box_vbl.setAlignment(QtCore.Qt.AlignTop)
group_box_vbl.addSpacing(-14)
delete_button_hbl = QtGui.QHBoxLayout()
delete_button_cb = QtGui.QCheckBox()
delete_button_cb.clicked.connect(self.delete_event)
delete_button_cb.setStyleSheet('QCheckBox::indicator:hover {image: url(del_btn_hover.png);}'
'QCheckBox::indicator:!hover {image: url(del_btn_no_hover.png);}')
delete_button_hbl.setAlignment(QtCore.Qt.AlignRight)
delete_button_hbl.addWidget(delete_button_cb)
delete_button_hbl.addSpacing(-13)
group_box_vbl.addLayout(delete_button_hbl)
delete_gb.setLayout(group_box_vbl)
window_vbl = QtGui.QVBoxLayout()
window_vbl.addWidget(delete_gb)
self.setLayout(window_vbl)
self.setGeometry(300, 300, 250, 150)
self.setWindowTitle('QGroupBox with Delete Button')
self.show()
# @QtCore.Slot()
def delete_event(self):
msg = "Define the code to delete the QGroupBox here!"
QtGui.QMessageBox().information(self, "Trying to delete the QGroupBox", msg)
if __name__ == '__main__':
app = QtGui.QApplication(sys.argv)
example = DeleteButtonExample()
sys.exit(app.exec_())
导致
并且两个图标(悬停和没有悬停)是:
和