短按键提示显示。






4.17/5 (9投票s)
这是一个原创想法 - 使用 Qt 的短按键提示显示。
引言
最近我开始一份新工作,需要在 Linux 下使用 Qt 进行软件开发。
他们之前开发的一些软件有很多快捷键,但只有在帮助菜单中的一个简单的对话框中才能查看到这些快捷键。
Qt 框架给我留下了深刻的印象。使用它开发非常容易,而且我发现了一种有趣的利用 Qt 显示快捷键帮助的方法。
背景
我的想法是,当用户按下 CTRL 键时,屏幕上会显示一条消息,显示所有可用的 CTRL 快捷键。
在 Qt 中,可以使用 installEventFilter 方法来实现。
我使用 Qt Creator 创建了一个简单的项目,通过向导和 GUI 设计器可以轻松创建。
我在中心放置了一个 pushButton
,并为该按钮设置了快捷键 ctrl-D。

然后在 Qt Creator 中的项目看起来像这样

当我运行程序并进入窗口,然后按下 CTRL 键时,会显示一个工具提示。

然后我按下 D 键,为应用程序开发的动作就会触发。
Using the Code
我的主要对象是 MainWindow
。
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
this->installEventFilter(this);
QObject::connect(ui->pushButton,SIGNAL(clicked()), this, SLOT(click_pick()));
}
这里重要的是要注意
this->installEventFilter(this);
这在主窗口上设置了一个事件处理程序(可能类似于 Windows 技术中的 winproc
)。
bool MainWindow::eventFilter (QObject* obj, QEvent* e)
{
if (e->type () == QEvent::KeyPress)
{
QKeyEvent* k = (QKeyEvent*) e;
if (k->key () == Qt::Key_Control)
{
QToolTip::showText(QPoint(0,0),QString
("Help reminder short keys : <br/> ctrl-D : push Button"));
}
}
else
{
if (e->type () == QEvent::KeyRelease)
{
QKeyEvent* k = (QKeyEvent*) e;
if (k->key () == Qt::Key_Control)
{
QToolTip::hideText();
}
}
else
{
return QObject::eventFilter(obj, e);
}
}
return false;
}
这里有趣的是注意到 QTooltip
对象的使用,用于显示快捷键提示。这非常实用,因为您可以将工具提示放置在屏幕上的任何位置,并轻松使其消失。
关注点
我想与大家分享这个关于快捷键提示显示的想法以及如何实现它。我还想与大家分享我对 Qt 框架的看法,尝试一下,它非常棒。我不知道如何在 Winform 或 WPF 中实现它,但我猜是可能的。因此,如果您想对应用程序的新用户友好,请使用这个想法来创建快捷键提示显示,以帮助他们入门。抱歉我的英语不好,我是法国人。
历史
- 2011年1月29日:初始发布