2015-02-09 3 views
1

У меня есть следующий примерный код, который составляет три макета вкладки (с кнопками на третьей вкладке). По умолчанию, я могу Ctrl +Tab/Ctrl + Сдвиг + Tab для переключения между вкладками. Как отключить эту функцию? В моем не-примерном коде это нежелательное поведение.Предотвратить показ с помощью Ctrl + Tab по умолчанию с QTabWidget

from PyQt4 import QtGui 
import sys 


def main(): 
    app = QtGui.QApplication(sys.argv) 
    tabs = QtGui.QTabWidget() 
    push_button1 = QtGui.QPushButton("QPushButton 1") 
    push_button2 = QtGui.QPushButton("QPushButton 2") 

    tab1 = QtGui.QWidget() 
    tab2 = QtGui.QWidget() 
    tab3 = QtGui.QWidget() 

    vBoxlayout = QtGui.QVBoxLayout() 
    vBoxlayout.addWidget(push_button1) 
    vBoxlayout.addWidget(push_button2) 
    tabs.resize(250, 150) 
    tabs.move(300, 300) 
    tab3.setLayout(vBoxlayout) 

    tabs.addTab(tab1, "Tab 1") 
    tabs.addTab(tab2, "Tab 2") 
    tabs.addTab(tab3, "Tab 3") 

    tabs.setWindowTitle('PyQt QTabWidget Add Tabs and Widgets Inside Tab') 
    tabs.show() 

    sys.exit(app.exec_()) 


if __name__ == '__main__': 
    main() 

ответ

3

Вы всегда можете установить eventFilter (аналогично KeyPressEater здесь)

Здесь я сделал это:

from PySide import QtGui, QtCore 

class AltTabPressEater(QtCore.QObject): 
    def eventFilter(self, obj, event): 
     if event.type() == QtCore.QEvent.KeyPress and (event.key() == 16777217 or event.key() == 16777218): 
      return True # eat alt+tab or alt+shift+tab key 
     else: 
      # standard event processing 
      return QtCore.QObject.eventFilter(self, obj, event) 

app = QtGui.QApplication([]) 

tabs = QtGui.QTabWidget() 
filter = AltTabPressEater() 
tabs.installEventFilter(filter) 
push_button1 = QtGui.QPushButton("QPushButton 1") 
push_button2 = QtGui.QPushButton("QPushButton 2") 

tab1 = QtGui.QWidget() 
tab2 = QtGui.QWidget() 
tab3 = QtGui.QWidget() 

vBoxlayout = QtGui.QVBoxLayout() 
vBoxlayout.addWidget(push_button1) 
vBoxlayout.addWidget(push_button2) 
tabs.resize(250, 150) 
tabs.move(300, 300) 
tab3.setLayout(vBoxlayout) 

tabs.addTab(tab1, "Tab 1") 
tabs.addTab(tab2, "Tab 2") 
tabs.addTab(tab3, "Tab 3") 

tabs.show() 

app.exec_() 

я был слишком ленив, чтобы найти правильный QtCore.Qt константы для Alt + Tab или alt + shift + tab, поэтому я только что слушал, а затем заменил то, что сказал мне python.

 Смежные вопросы

  • Нет связанных вопросов^_^