Как сделать QTabWidget кликабельным?

Я искал эту тему и нашел несколько примеров того, как сделать qwidget кликабельным, но только для печати таких текстов, как этот import sys

from PyQt4.QtGui import QWidget, QApplication

class MyWidget(QWidget):
    def mousePressEvent(self, event):
        print "clicked"

app = QApplication(sys.argv)

widget = MyWidget()
widget.show()

app.exec_()

что мне нужно, можно ли сделать QTabWidget кликабельным, и когда мы нажмем на него, мы можем использовать его как кнопку, например, для открытия файла?


person seghier    schedule 03.10.2017    source источник
comment
я нашел решение, но мне нужно больше тестов, чтобы получить то, что я хочу:   -  person seghier    schedule 03.10.2017


Ответы (1)


Что вам нужно сделать, так это создать сигнал и вывести его, как показано ниже:

class ClickableQTabWidget(QTabWidget):
    clicked = pyqtSignal()
    def mousePressEvent(self, event):
        self.clicked.emit()

class Widget(QWidget):
    def __init__(self, parent=None):
        QWidget.__init__(self, parent)
        self.setLayout(QVBoxLayout())
        self.cw = ClickableQTabWidget(self)
        self.layout().addWidget(self.cw)
        self.cw.clicked.connect(self.onClicked)

    def onClicked(self):
        print("clicked")

app = QApplication(sys.argv)

widget = Widget()
widget.show()

app.exec_()
person eyllanesc    schedule 03.10.2017
comment
@seghier Если это работает для вас, отметьте это как правильное. - person eyllanesc; 04.10.2017
comment
да, это работает как решение, которое я нашел с двумя простыми строками: self.tabWidget.mousePressEvent = self.tabOpen1 и def tabOpen1(self, event): self.folder_open.toggle(); таким образом, когда я нажимаю на виджет вкладки, кнопка переключается и открывает/закрывает окно списка - person seghier; 04.10.2017
comment
Это решение, в частности, оно работает, если у вас будет только виджет этого типа, в моем случае я предложил класс, поскольку он имеет сигнал, что вы можете подключиться к нескольким слотам. Если мой ответ помог вам, не забудьте отметить его как правильный. - person eyllanesc; 04.10.2017
comment
@seghier Кроме того, в SO принято голосовать или помечать ответ как правильный, если ответ правильный. и я вижу, что вы этого не сделаете, это обескураживает меня продолжать помогать вам. - person eyllanesc; 04.10.2017
comment
не понимаю это так, потому что я еще не пробовал метод тура; мне нужно сначала создать новый файл и попробовать; и это обещание - person seghier; 04.10.2017
comment
@seghier Пожалуйста, найдите время, чтобы попробовать, так как я взял свой, чтобы помочь вам. :П - person eyllanesc; 04.10.2017
comment
@seghier Я обновил свой ответ, чтобы вы могли легко попробовать его: D - person eyllanesc; 04.10.2017
comment
сегодня вечером, и вы найдете мой ответ здесь :) ; Благодарность - person seghier; 04.10.2017