c++ - QShortcut 不工作

标签 c++ qt keyboard-shortcuts

我似乎无法使用我的键盘快捷键。这是代码:

class Interface : public QObject 
{
    Q_OBJECT

    private:

    QMainWindow myWindow;
    QWidget mainWidget;
    QShortcut shortcut;

    public:

    Interface();
    ~Interface();
    void show(void);

    public slots:

    void haha(void);
};

Interface::Interface() : 
    QObject(),
    shortcut(QKeySequence(Qt::Key_Enter), &mainWidget)
{
    myWindow.setFixedSize(1200, 600);
    myWindow.setCentralWidget(&mainWidget);
    QObject::connect(&shortcut, SIGNAL(activated()), this, SLOT(haha()));
}

void Interface::show(void)
{
    myWindow.show();
}

void Interface::haha(void)
{
    std::cout << "foo" << std::endl;
}

我的主要功能是:

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
    QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));

    Interface myInterface;
    myInterface.Show();
    return app.exec();
}

它编译时没有任何警告/错误,但是当我执行它时,当我按 Enter 时没有打印“foo”。我已经在网上查过了,但我没有找到足够接近的东西。如果我错过了相关内容,我很抱歉。

最佳答案

Qt::Key_Enter 指的是键盘上的键。如果您希望在按下键盘上的主 Enter 键时调用槽,则应使用 Qt::Key_Return:

Interface::Interface() : 
    QObject(),
    shortcut(QKeySequence(Qt::Key_Return), &mainWidget)
{
    myWindow.setFixedSize(1200, 600);
    myWindow.setCentralWidget(&mainWidget);
    QObject::connect(&shortcut, SIGNAL(activated()), this, SLOT(haha()));
}

关于c++ - QShortcut 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27590083/

相关文章:

C++ 模板和带有方法指针的继承

c++ - Windows 怎么知道我没有使用内存?

c++ - 这个功能背后的机制是什么?

c++ - GL_MULTISAMPLE 在哪里定义?

java - 在 Linux Mint 上的 Eclipse 中使用箭头键在调用层次结构中导航

delphi - 当操作管理器位于数据模块中时,键盘快捷键未捕获?

c++ - 如何在 C++ 中将 ssl 与 smtp 一起使用

c++ - boost::asio io_service 保留我的其余代码运行

macos - 如何使用 install_name_tool 在 Mac OS X 上部署 Qt 应用程序?

keyboard-shortcuts - 如何在PHPStorm中将多行选择扩展到全行?