QTabWidget への独自のショートカット キーを作成できるかどうか疑問に思っていました。したがって、文字の前にアンパサンドを配置すると、ALT+'文字' でそのタブが表示されます。ただし、CTRL + 'letter'でそのタブが表示されるようにしたい(ALTではありません)。
Qt Designer でこれを行う簡単な方法はありますか? そうでない場合、コードでそれを行う簡単な方法はありますか? QTabWidget には、ショートカットを設定するための直接的な方法がないようです。
QTabWidget への独自のショートカット キーを作成できるかどうか疑問に思っていました。したがって、文字の前にアンパサンドを配置すると、ALT+'文字' でそのタブが表示されます。ただし、CTRL + 'letter'でそのタブが表示されるようにしたい(ALTではありません)。
Qt Designer でこれを行う簡単な方法はありますか? そうでない場合、コードでそれを行う簡単な方法はありますか? QTabWidget には、ショートカットを設定するための直接的な方法がないようです。
デザイナーを介してこれを行う方法がわかりません。それに慣れていません。ただし、コードで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)));
}
};
これは、ウィジェット レイアウトのベスト プラクティスの例としてではなく、ショートカット シーケンスをタブの変更に結び付ける 1 つの方法を説明するためのものです。