首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Qt C++错误--没有调用'QString::QString(KeySequence)‘的匹配函数

Qt C++错误--没有调用'QString::QString(KeySequence)‘的匹配函数
EN

Stack Overflow用户
提问于 2017-06-13 07:42:58
回答 1查看 3.7K关注 0票数 1

在用C++编写的GUI项目中,我使用了QT4.8.4。现在,我合并到QT5.7版本。经过长时间的代码调整之后,我终于打开了GUI。但是,当我运行我的计算代码时,我仍然会得到以下错误:

调用'QString::QString(KeySequence)'的无匹配函数

在以下几行:

代码语言:javascript
复制
  action = popup->addAction(EnhTableWidget::tr("&Copy") + QLatin1Char('\t') + QString(QKeySequence(QKeySequence::Copy)));
  ...
  action = popup->addAction(EnhTableWidget::tr("Delete") + QLatin1Char('\t') + QString(QKeySequence(QKeySequence::Delete)));
  ...
  action = popup->addAction(EnhTableWidget::tr("Select All") + QLatin1Char('\t') + QString(QKeySequence(QKeySequence::SelectAll)));

QKeySequence的使用似乎是错误的。从Qt站点我看不出问题所在。

怎么啦?

这是我代码的一部分:

代码语言:javascript
复制
 #include "EnhTableWidget.h"
 #include <QKeyEvent>
 #include <QApplication>
 #include <QClipboard>
 #include <QHeaderView>
 #include <QKeySequence>
 #include <QAction>

 EnhTableWidget::EnhTableWidget(QWidget *parent) :
  QTableWidget(parent)
 {}


 void EnhTableWidget::keyPressEvent(QKeyEvent *event)
 {
       if ( event->matches(QKeySequence::Copy) )
        copy();
       else if ( event->matches(QKeySequence::Delete) || event->key() == Qt::Key_Backspace )
        deleteSelected();
       else if ( event->matches(QKeySequence::SelectAll) )
        selectAll();
       else
        QTableWidget::keyPressEvent(event);
 }


QMenu *EnhTableWidget::createStandardContextMenu()
  {
    QMenu *popup = new QMenu(this);
    popup->setObjectName(QLatin1String("qt_edit_menu"));
    QAction *action = 0;

  #ifndef QT_NO_CLIPBOARD

    action = popup->addAction(EnhTableWidget::tr("&Copy") + QLatin1Char('\t') + QString(QKeySequence(QKeySequence::Copy)));
    action->setEnabled(!selectionModel()->selectedIndexes().isEmpty());
    connect(action, SIGNAL(triggered()), SLOT(copy()));

  #endif

    action = popup->addAction(EnhTableWidget::tr("Delete") + QLatin1Char('\t') + QString(QKeySequence(QKeySequence::Delete)));
    action->setEnabled(isEnabled() && !selectionModel()->selectedIndexes().isEmpty());
    connect(action, SIGNAL(triggered()), this, SLOT(deleteSelected()));

        if (!popup->isEmpty())
              popup->addSeparator();

    action = popup->addAction(EnhTableWidget::tr("Select All") + QLatin1Char('\t') + QString(QKeySequence(QKeySequence::SelectAll)));
    action->setEnabled(isEnabled());
    connect(action, SIGNAL(triggered()), SLOT(selectAll()));

  return popup;
 }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-13 07:57:00

QString没有一个以QKeySequence作为参数的构造函数。你必须使用QKeySequence::toString

代码语言:javascript
复制
action = popup->addAction(tr("&Copy") + QLatin1Char('\t') + QKeySequence(QKeySequence::Copy).toString());
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44515215

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档