Qt Designer的快捷方式到另一个选项卡(Qt Designer Shortcut to an

2019-09-16 13:35发布

我在想,如果有可能创建自己的快捷键一QTabWidget。 所以,如果我把信的符号盈,这意味着ALT +“信”将显示该选项卡; 不过,我想它,以便CTRL +“信”将显示选项卡(不ALT)。

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

Answer 1:

我不知道的方式通过设计,不熟悉的做到这一点。 你可以用做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)));
      }
};

这并不意味着作为小部件布局的最佳实践的例子......只是为了说明连接一个快捷键序列标签变化的一种方式。



文章来源: Qt Designer Shortcut to another tab