简单的功能区:如何在QTabBar中使用QAction?

时间:2016-02-27 12:27:47

标签: qt ribbon qaction qtabbar qtoolbar

我试图用Qt5实现简单的标签界面。我使用QTabWidget并将QToolBar放置在其标签中,然后将QAction添加到QToolBar s。

这有效但会导致以下问题:只有在其父标签处于活动状态时,任何操作仍然可以访问。如果我尝试使用键盘快捷方式当前"隐形"行动,我将没有成功。由于没有菜单等,标签是唯一放置动作的地方。

以下是我如何将元素添加到工具栏中:

QTabWidget *ribbon               = new QTabWidget(window);
QToolBar *tool_bar_game          = new QToolBar(tab_game);
QAction *action_go_to_next_level = new QAction(window);

action_go_to_next_level->setText(QApplication::translate("Window", "&Next", 0));
action_go_to_next_level->setIcon(QIcon::fromTheme("go-last"));
action_go_to_next_level->setShortcut(QApplication::translate("Window", "PgDown", 0));


ribbon->addTab(tool_bar_game, tr("Game"));
tool_bar_game->addAction(action_go_to_next_level);

和截图:

Ribbon-like 2-tabs interface

即使当前未打开操作的父标签,如何使用快捷方式访问操作?

1 个答案:

答案 0 :(得分:1)

我并不感到惊讶,这不起作用,实际上你尝试在隐藏的小部件上使用快捷方式。如果这样做会很困惑。

明显的解决方法是将快捷方式而不是def Loader(): wb = Workbook.caller() file_path = Range(1,(1,1)).value file=pd.read_excel(file_path, sheetname='Sheet1') df = pd.DataFrame(file) return df def analyze(df): Range('C1').value=df.describe() # Use it this way dataFrame = Loader() analyze(dataframe) 添加到始终处于活动状态的窗口小部件中。就个人而言,我建议窗口。

如果没有测试代码,我相信这应该有效:

class Loader(object):
    def __init__(self):
        wb = Workbook.caller() 
        file_path = Range(1,(1,1)).value
        file=pd.read_excel(file_path, sheetname='Sheet1')
        self.df = pd.DataFrame(file)

        # 1) If you want to analyse when you create the object
        # call analyze() here
        self.analyze()

    def analyze(self):
        Range('C1').value=self.df.describe()

    loader = Loader()
    # 2) Otherwise you can keep control of analyze()
    # and call it whenever you want, like this:
    loader.analyze()