Qt C ++ Ошибка нет подходящей функции для вызова ‘QString :: QString (KeySequence)’

Я использовал Qt 4.8.4 для моего GUI-проекта, написанного на C ++. Теперь я слился с Qt версии 5.7. После долгого процесса адаптации моего кода я наконец-то открыл свой графический интерфейс. Но когда я запускаю свой код расчета, я все еще получаю эту ошибку:

нет соответствующей функции для вызова ‘QString :: QString (KeySequence)’

в этих строках:

  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 я не вижу проблемы.

Кто-нибудь знает, что не так?

Спасибо !

Это (часть) моего кода:

 #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;
}

1

Решение

QString не имеет конструктора, который принимает QKeySequence в качестве аргумента. Вы должны использовать QKeySequence::toString.

action = popup->addAction(tr("&Copy") + QLatin1Char('\t') + QKeySequence(QKeySequence::Copy).toString());
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]