c++ - 如何覆盖Qt中的默认快捷方式

标签 c++ qt

我有一个小部件,它可以包含一个或多个 QTableView 子小部件。默认情况下,当我在其中一个 QTableViews 中选择一个范围并点击 crtl+c 时,只有最左边最上面的单元格被复制到剪贴板。我想复制整个范围,所以我实现了一个 copy() 插槽来完成这项工作。我希望可以从上下文菜单(当用户进行选择并右键单击相应的 QTableView 时)和 ctrl+c 快捷方式访问复制槽。

class Widget
{
    Q_OBJECT
public:
    void setupContextMenu();

private:

    QMenu* contextMenu_;
    QAction* copyAction_;
    QTableView* tableView_;

private slots:
    void copy();
}

void Widget::setupContextMenu()
{
    contextMenu_ = new QMenu(this);
    copyAction_ = contextMenu_->addAction("&Copy");
    copyAction_->setShortcut(QKeySequence::Copy);
    connect(copyAction_, SIGNAL(triggered()),
            this, SLOT(copy()));
}

当我选择一个范围并右键单击时,会弹出相应的上下文菜单,它甚至包含快捷方式的名称。当我单击上下文菜单中的“复制”操作时,将执行 copy() 插槽。然而,ctrl+c 快捷键只是像以前一样只复制选择中最左边的最上面的单元格。此外,copy() 槽不会被执行。

我该如何修复它?

最佳答案

我不确定,但也许快捷键不适用于 Qt 中的上下文菜单?

复制快捷方式的处理发生在 QAbstractItemView::keyPressEvent() 中。你可以install an event filter到您的 QTableView 监视 KeyPress 事件并在那里处理您的拷贝。

关于c++ - 如何覆盖Qt中的默认快捷方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11839066/

相关文章:

c++ - Microsoft C/C++ 优化编译器编译成什么

c++ - 仅刷新文件元数据

c++ - Qt 信号与槽 : How do I get the data which was changed?

qt - QML:有条件地设置属性组的不同属性

multithreading - Qt线程调用问题

具有动态回调函数类型的 C++ 模板类

php - 美元符号以某种方式与 C++ 指针相关吗?

C++如何让两个程序进行通信?

c++ - QSerialPort 和虚拟端口模拟器

c++ - 在 Qt 中 moc'ing 头文件时奇怪的预处理器行为