class SearchBox(QWidget): def __init__(self, parent = None): super(SearchBox, self).__init__(parent) self.setFixedHeight(30) self.lineEdit = QLineEdit() self.lineEdit.setFixedHeight(29) self.lineEdit.setToolTip("输入搜索关键词") self.lineEdit.setFocusPolicy(Qt.ClickFocus) self.searchButton = QToolButton() self.searchButton.setText("搜索") self.searchButton.setFixedHeight(30) self.searchButton.setToolTip("点击搜索") self.searchButton.setCursor(QCursor(Qt.PointingHandCursor)) self.resetButton = QToolButton() self.resetButton.setIcon(QIcon(":/iconSources/icons/reset.png")) self.resetButton.setIconSize(QSize(24, 24)) self.resetButton.setFixedSize(27, 27) self.resetButton.setToolTip("重置搜索") self.resetButton.setCursor(QCursor(Qt.PointingHandCursor)) self.clearButton = QToolButton() self.searchComboBox = QComboBox() self.searchComboBox.setToolTip("选择搜索类型") musicIcon = QIcon(":/iconSources/icons/music.png") artistIcon = QIcon(":/iconSources/icons/artist.png") albumIcon = QIcon(":/iconSources/icons/album.png") self.searchComboBox.setIconSize(QSize(20,20)) self.searchComboBox.insertItem(0, musicIcon, "歌曲") self.searchComboBox.insertItem(1, artistIcon, "歌手") self.searchComboBox.insertItem(2, albumIcon, "专辑") self.searchComboBox.setFixedSize(78, 27) self.searchComboBox.setCursor(Qt.PointingHandCursor) searchIcon = QIcon(":/iconSources/icons/delete.png") self.clearButton.setFixedSize(27, 27) self.clearButton.setIcon(searchIcon) self.clearButton.setIconSize(QSize(18, 18)) self.clearButton.setAutoRaise(True) self.clearButton.setToolTip("清空搜索栏") self.clearButton.setCursor(Qt.PointingHandCursor) self.clearButton.hide() searchLayout = QHBoxLayout() searchLayout.addWidget(self.searchComboBox) searchLayout.addStretch() searchLayout.addWidget(self.clearButton) searchLayout.setMargin(1) searchLayout.setSpacing(0) searchLayout.setContentsMargins(0, 0, 0, 0) self.lineEdit.setLayout(searchLayout) self.lineEdit.setTextMargins(self.searchComboBox.width(), 0, self.clearButton.width(), 0) mainLayout = QHBoxLayout(self) mainLayout.setMargin(0) mainLayout.setSpacing(1) mainLayout.addWidget(self.resetButton) mainLayout.addWidget(self.lineEdit) mainLayout.addWidget(self.searchButton) #self.connect(self.clearButton, SIGNAL("clicked()"), self.lineEdit.clear) self.clearButton.clicked.connect(self.lineEdit.clear) self.lineEdit.textChanged.connect(self.clrbutton_show) def clrbutton_show(self): if self.lineEdit.text(): self.clearButton.show() else: self.clearButton.hide()