我的应用程序位于托盘中,我希望它显示其对话框以响应全局热键,例如Google桌面搜索。它不一定是跨平台的。
答案 0 :(得分:1)
搜索SO以获取 [qt]全球热键以及其他结果:
答案 1 :(得分:0)
Ubuntu使用GConf来存储设置。它看起来像Windows注册表。 Those keys用于存储全局快捷方式。要设置全局键控,您应该处理GTK。所以安装这些包:
并在以下行中添加到您的.pro
文件中:
INCLUDEPATH += /usr/include/gconfmm-2.6\
/usr/include/glibmm-2.4\
/usr/lib/glibmm-2.4/include\
/usr/include/glib-2.0\
/usr/lib/glib-2.0/include\
/usr/include/sigc++-2.0\
/usr/lib/sigc++-2.0/include\
/usr/include/gconf/2
LIBS += -L/usr/lib -lgconfmm-2.6
然后您需要创建新的.cpp
文件或类,因为您不能在同一文件中包含Qt和GTK标头。
#include <gconfmm.h>
using namespace Gnome;
和主要部分:
Conf::init();
try
{
Glib::RefPtr<Conf::Client> pointer(Conf::Client::get_default_client());
pointer->set("/apps/metacity/keybinding_commands/command_2",Glib::ustring("gedit"));
pointer->set("/apps/metacity/global_keybindings/run_command_2",Glib::ustring("<Control><Alt>e"));
}
catch(Conf::Error error)
{
std::cerr << "Error code: " << error.code();
}
您可以使用所有预定义的密钥而不是command_2
(例如command_screenshot
),您可以创建自己的密钥,例如
/apps/metacity/keybinding_commands/command_textedit
/apps/metacity/global_keybindings/run_command_textedit
但您还需要为自定义键设置架构(我不知道如何操作,我是GTK的新手)。执行代码后,快捷方式可以正常工作。