Introduction
Recently I begin a new job, and have to develop a software under linux with Qt.
They made some software with a lot of shortkey with only a poor dialog box in the help menu to know them.
So I'm impressed by the Qt Framework. It is so easy to develop with it and I found an interesting way to show Short key helper with Qt.
Have a look at an interesting article on Qt.
Background
My idea is when the user presses the CTRL key, then a message appears on the display to show all short keys available with ctrl.
It's possible in Qt with the installEventFilter method.
I made a simple project with Qt Creator, it's really easy to make it by the wizard, and the GUI designer.
I place a pushButton
in the center, and set a short cut ctrl-D on this button.
Then the project in Qt Creator looks like that:
When I run the program and go on the window, and press CTRL, a tooltip appears:
And after I press D, the action I develop for the application arrives.
Using the Code
My principal object is 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()));
}
The important thing here is to notice:
this->installEventFilter(this);
This sets a handler event on the mainwindow (may be like a winproc
in Windows technology).
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;
}
The interest here is to notice the using of the QTooltip
object to show the short key reminder. It's really practical because you can place the tooltip where you want on the screen, and make it disappear easily.
Points of Interest
I want to share with you this idea about a short key reminder display and the way to realize it. And I want to share with you also my opinion about Qt Framework, try it, it's amazing. I don't know how to realize it with Winform or in WPF, but I guess it's possible. So if you want to be friendly with new users of your application, use this idea to make short key reminder display to help them in the beginning. Sorry for my poor English, I'm French.
History
- 29th January, 2011: Initial post