Вы пытаетесь подключить сигнал currentChanged
не к тому объекту. main_tab_object
— это QTabWidget, который излучает этот сигнал, но вы пытаетесь подключить этот сигнал от self.cc_tab
, QWidget на одной из вкладок.
Заменить строку
self.connect(self.cc_tab, SIGNAL('currentChanged(int)'), self.pseudofunction)
с
self.connect(main_tab_widget, SIGNAL('currentChanged(int)'), self.pseudofunction)
EDIT: невозможно использовать механизм сигналов/слотов для подключения разных функций к каждой вкладке QTabWidget. Если вы хотите вызывать разные функции при выборе разных вкладок, вам придется написать другую функцию, которая вызывает соответствующую функцию в зависимости от того, какая вкладка была выбрана. Например:
def selector(self, selected_index):
if selected_index == 0:
self.some_function_for_run_tab()
elif selected_index == 1:
self.some_function_for_cc_tab()
elif selected_index == 2:
self.some_function_for_result_tab()
Затем вы подключаете сигнал currentChanged
QTabWidget к этой функции.
Вы правы в том, что QTabBar также имеет сигнал currentChanged
, но ваше использование его во втором комментарии путем замены QWidget()
на QTabBar()
в приведенном выше коде не приведет к тому, что вы хотите.
QTabBar действует только как панель, содержащая набор вкладок. (На самом деле, QTabWidget использует QTabBar внутри своей панели вкладок.) Таким образом, размещение QTabBar внутри QTabWidget дает вам вкладки внутри вкладок. Я не верю, что это то, чего ты хочешь. Кроме того, я подозреваю, что вы не добавляете вкладки в QTabBars. В QTabBars есть сигнал currentChanged
, и ваш код правильно соединит эти сигналы, но эти сигналы никогда не сработают, потому что QTabBars не содержат вкладок для изменения.
Тот факт, что эти QTabBars сами могут находиться внутри QTabWidget, не имеет значения. Они видят изменения только в своем собственном наборе вкладок и, следовательно, могут активировать сигналы только об изменениях в своем собственном наборе вкладок.
person
Luke Woodward
schedule
03.04.2011