【问题标题】:Compilation error in C++ Qt creator projectC++ Qt 创建者项目中的编译错误
【发布时间】:2016-09-05 16:11:18
【问题描述】:

我是编程新手。我从 Git hub 下载了 Qt 项目存储库,并尝试在我的 Ubuntu 14.04 上构建它。当我尝试编译它时,我遇到了一些错误。我正在使用 Qt5,项目文件至少有 5 年的历史。 代码如下,

#include <QtGui>

#include "mainwindow.h"        
MainWindow::MainWindow(QWidget *parent)
    : QDialog(parent)
{
showMaximized();
A = new FiniteElements;
B = new QwtBeginner;
browseButton = createButton(tr("&Open"), SLOT(browse()));

QGridLayout *mainLayout = new QGridLayout;

mainLayout->addWidget(B, 0, 0);
mainLayout->addWidget(browseButton, 0, 1);

setLayout(mainLayout);

setWindowTitle(tr("L4V14_oapsois by Mikhail Krishtop"));
}

void MainWindow::browse()
{
QString filepath = QFileDialog::getOpenFileName(this,tr("Select input      datafile"),QDir::currentPath());

if (!filepath.isEmpty()) {
    std::string str = std::string(filepath.toAscii().data());
    const char * stuff = str.c_str();
    A->SetFN(stuff);
    A->evaluate();
           B->eval(A->GetXArray(),A->GetYArray(),A->GetN(),A->GetTriangles(),stuff,
            A->GetTArray(),A->GetX(),A->GetY(),A->GetResultTemp());
}
}

QPushButton *MainWindow::createButton(const QString &text, const char *member)
{
QPushButton *button = new QPushButton(text);
connect(button, SIGNAL(clicked()), this, member);
return button;
}

我收到以下错误,
错误:未在此空间中声明 QGridLayout
错误:尚未声明 QFileDialog
错误:无效使用不完整类型'class QPushButton'

谁能帮帮我? ^

【问题讨论】:

    标签: c++ qt


    【解决方案1】:

    尝试包含缺少的标题

        #include <QGridLayout>
        #include <QFileDialog>
        #include <QPushButton>
    

    【讨论】:

      【解决方案2】:

      您缺少许多包含,请注意QtGui 不会为您提供QGridLayoutQFileDialogQPushButton。根据 Qt 文档:

      Qt GUI 模块提供用于窗口系统集成的类, 事件处理、OpenGL 和 OpenGL ES 集成、2D 图形、 图像、字体和排版。这些类由内部使用 Qt 的用户界面技术,也可以直接使用,用于 使用低级 OpenGL ES 图形编写应用程序的实例 API。

      请参阅here,了解 QtGui 中包含的类的完整概述。因此,总而言之,正如 Thx 所指出的那样。 @HAG,您需要添加以下内容:

      #include <QGridLayout>
      #include <QFileDialog>
      #include <QPushButton>
      

      或者,您可以只包含 QtWidgets 类,它将为您提供所有这些类。

      #include <QtWidgets>
      

      请参阅here,以获取包含QtWidgets 的课程的完整概述。

      【讨论】:

      • 谢谢@Gio。有效。但我收到另一条错误消息,错误:'class QString'没有名为'toAscii'的成员。你能解决吗^
      • @user294664,请提供有用的答案。我建议您在使用 Qt 时,始终打开文档以进行检查。例如。 QString 没有名为“toAscii”的成员,正如您的错误消息所说,您可以通过查看 QString 文档here 来检查。
      • ,对不起。我不了解您提到的信用系统,因为我是 stackoverflow 的新手。我还不了解编写好程序的技术。我在qmake上问了另一个问题。可以试试吗?
      猜你喜欢
      • 1970-01-01
      • 2015-11-15
      • 2013-03-04
      • 1970-01-01
      • 2014-11-01
      • 2016-03-20
      • 1970-01-01
      • 2014-04-07
      • 1970-01-01
      相关资源
      最近更新 更多