Qt Designer另一个选项卡的快捷方式

时间:2012-04-15 07:14:29

标签: qt qt4 qt-designer

我想知道是否可以创建自己的QTabWidget快捷键。因此,如果我在字母前面加上一个&符号,那意味着ALT +'letter'将显示该标签;但是,我想要它以便CTRL +'letter'将显示该选项卡(而不是ALT)。

在Qt Designer中有一种简单的方法吗?如果没有,有没有一种简单的方法在代码中做到这一点? QTabWidget似乎没有任何直接的方法来设置快捷方式。

1 个答案:

答案 0 :(得分:4)

我不知道通过Designer做到这一点的方法,不熟悉。你可以在代码中用QShortcut很容易地做到这一点。

这是一个虚拟小部件来说明这一点。按 Ctrl + a / Ctrl + b 可在标签之间切换。

#include <QtGui>

class W: public QWidget
{
    Q_OBJECT

    public:
      W(QWidget *parent=0): QWidget(parent)
      {
        // Create a dummy tab widget thing
        QTabWidget *tw = new QTabWidget(this);
        QLabel *l1 = new QLabel("hello");
        QLabel *l2 = new QLabel("world");
        tw->addTab(l1, "one");
        tw->addTab(l2, "two");
        QHBoxLayout *l = new QHBoxLayout;
        l->addWidget(tw);
        setLayout(l);

        // Setup a signal mapper to avoid creating custom slots for each tab
        QSignalMapper *m = new QSignalMapper(this);

        // Setup the shortcut for the first tab
        QShortcut *s1 = new QShortcut(QKeySequence("Ctrl+a"), this);
        connect(s1, SIGNAL(activated()), m, SLOT(map()));
        m->setMapping(s1, 0);

        // Setup the shortcut for the second tab
        QShortcut *s2 = new QShortcut(QKeySequence("Ctrl+b"), this);
        connect(s2, SIGNAL(activated()), m, SLOT(map()));
        m->setMapping(s2, 1);

        // Wire the signal mapper to the tab widget index change slot
        connect(m, SIGNAL(mapped(int)), tw, SLOT(setCurrentIndex(int)));
      }
};

这不是一个小部件布局最佳实践的示例...只是为了说明将快捷方式序列连接到选项卡更改的一种方法。