我有一个小部件,它可以包含一个或多个 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() 插槽不会被执行。
我该如何修复这个?