Почему KDevel не находит определения классов?

Я пытаюсь (второй раз) Kubuntu на виртуальной машине Hyper-V, но в обоих случаях я получаю следующее поведение от KDevel.

Я установил KDevel с помощью Discover, открыл KDevel и попытался создать приложение, используя один из предоставляемых им шаблонов (Qt > Graphical > KParts Application).

Код, который я получаю в main.cpp, следующий.

#include "kdrupalconsoleshell.h"

// KF headers
#include <KAboutData>
#include <KLocalizedString>

// Qt headers
#include <QApplication>
#include <QCommandLineParser>
#include <QUrl>
#include <QDir>
#include <QIcon>

int main(int argc, char **argv)
{
    QApplication app(argc, argv);

    KLocalizedString::setApplicationDomain("kdrupalconsole");

    KAboutData aboutData(QStringLiteral("kdrupalconsole"),
        i18n("KDrupalConsole"),
        QStringLiteral("%{VERSION}"),
        i18n("A KPart Application"),
        KAboutLicense::GPL,
        i18n("Copyright %{CURRENT_YEAR} %{AUTHOR}"));
    aboutData.addAuthor(i18n("%{AUTHOR}"), i18n("Author"), QStringLiteral("%{EMAIL}"));
    aboutData.setOrganizationDomain("example.org");
    aboutData.setDesktopFileName(QStringLiteral("org.example.kdrupalconsole"));

    KAboutData::setApplicationData(aboutData);
    app.setWindowIcon(QIcon::fromTheme(QStringLiteral("kdrupalconsole")));

    QCommandLineParser parser;
    parser.addHelpOption();
    parser.addVersionOption();
    aboutData.setupCommandLine(&parser);
    parser.addPositionalArgument(QStringLiteral("urls"), i18n("Document(s) to load."), QStringLiteral("[urls...]"));

    parser.process(app);
    aboutData.processCommandLine(&parser);

    const auto urls = parser.positionalArguments();

    if (urls.isEmpty()) {
        auto window = new KDrupalConsoleShell;
        window->show();
    } else {
        for (const auto &url : urls) {
            auto window = new KDrupalConsoleShell;
            window->show();
            window->loadDocument(QUrl::fromUserInput(url, QDir::currentPath(), QUrl::AssumeLocalFile));
        }
    }

    return app.exec();
}

Когда я смотрю на то, что сообщается на вкладке " Проблемы ", я получаю следующие ошибки из семантического анализа. (Я сообщаю только часть из них.)

Файл 'QCommandLineParser' не найден
Файл 'QUrl' не найден
Файл 'QDir' не найден
Файл 'QIcon' не найден
Неизвестное имя типа "QApplication"
Использование необъявленного идентификатора 'KLocalizedString'
Неизвестное имя типа 'KAboutData'
Использование необъявленного идентификатора 'QStringLiteral'
Использование необъявленного идентификатора 'i18n'
Использование необъявленного идентификатора 'QStringLiteral'
Использование необъявленного идентификатора 'i18n'
Использование необъявленного идентификатора "KAboutLicense"

Если щелкнуть правой кнопкой мыши на неизвестном имени типа "QApplication" правой кнопкой мыши, я получу подсказку об исправлении, в которой предлагается включить новый заголовочный файл. После того, как я применил некоторые подсказки исправления, список включенных заголовочных файлов изменится на следующий.

#include "kdrupalconsoleshell.h"
#include <qt5/QtWidgets/qapplication.h>
#include <KF5/KI18n/klocalizedstring.h>
#include <KF5/KCoreAddons/kaboutdata.h>
#include <qt5/QtWidgets/qapplication.h>

// KF headers
#include <KAboutData>
#include <KLocalizedString>

// Qt headers
#include <QApplication>
#include <QCommandLineParser>
#include <QUrl>
#include <QDir>
#include <QIcon>

Теперь я получаю новые ошибки, например, переменная имеет неполный тип "QApplication", для которого подсказка исправления добавляет это уже существующее #include <qt5/QtWidgets/qapplication.h> линия.

Помимо применения подсказок исправления, о которых я сообщал, я не редактировал код, сгенерированный из среды IDE.

Есть ли что-то, что мне нужно сделать перед началом создания кода? Нужно ли, например, изменять настройки, указывать KDevel выполнить какие-либо действия или устанавливать что-то еще?

Если это имеет какое-то значение, я использую KDevel 5.2.1.

0 ответов

Другие вопросы по тегам