65.9K
CodeProject 正在变化。 阅读更多。
Home

短按键提示显示。

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.17/5 (9投票s)

2011年1月29日

CPOL

2分钟阅读

viewsIcon

66033

downloadIcon

338

这是一个原创想法 - 使用 Qt 的短按键提示显示。

引言

最近我开始一份新工作,需要在 Linux 下使用 Qt 进行软件开发。

他们之前开发的一些软件有很多快捷键,但只有在帮助菜单中的一个简单的对话框中才能查看到这些快捷键。

Qt 框架给我留下了深刻的印象。使用它开发非常容易,而且我发现了一种有趣的利用 Qt 显示快捷键帮助的方法。

请参阅一篇关于 Qt 的有趣文章.

背景

我的想法是,当用户按下 CTRL 键时,屏幕上会显示一条消息,显示所有可用的 CTRL 快捷键。

在 Qt 中,可以使用 installEventFilter 方法来实现。

我使用 Qt Creator 创建了一个简单的项目,通过向导和 GUI 设计器可以轻松创建。

我在中心放置了一个 pushButton,并为该按钮设置了快捷键 ctrl-D。

ShortKeyReminderDisplay/basic.png

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

ShortKeyReminderDisplay/projet.png

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

ShortKeyReminderDisplay/tooltipAppear.png

然后我按下 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日:初始发布
© . All rights reserved.