C++ 语法错误:'';在'之前;{';

C++ 语法错误:'';在'之前;{';,c++,qt,syntax-error,C++,Qt,Syntax Error,当我的qt程序出现一些错误时。看看代码,我把错误和相应的行放在一起。我正在使用Windows 10上的qt creator制作/运行这个程序 #include "mainwindow.h" #include "ui_mainwindow.h" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); Q

当我的qt程序出现一些错误时。看看代码,我把错误和相应的行放在一起。我正在使用Windows 10上的qt creator制作/运行这个程序

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    QMainWindow::showFullScreen();
    QPixmap p("C:/Users/*****/Pictures/Start_Orb.png");
    ui->label->setPixmap(p);
    ui->label->setFixedSize(400, 400);
    ui->label->show();
}

void MainWindow::keyPressEvent(QKeyEvent *event)
{
    if(MainWindow.isFullScreen() && event->key() == Qt::Key_Escape){//syntax error '.' and syntax error: missing ';' before '{'
        MainWindow.close();//syntax error '.' and syntax error: missing ';' before '.'
    }
}

MainWindow::~MainWindow()
{
    delete ui;
}

I

MainWindow.isFullScreen()
是无效的表达式,因为
MainWindow
是类型,而不是对象

如果
isFullScreen
是对象的
静态方法,则可以使用
main window::isFullScreen()
。否则,可以使用
this->isFullScreen()


main window.close()
必须进行类似修改。

尝试以下替换代码:

void MainWindow::keyPressEvent(QKeyEvent *event)
{
    if(this->isFullScreen() && event->key() == Qt::Key_Escape){
        this->close();
    }
}

如果
MainWindow
是一个类名,那么它后面不能跟
,它的静态方法应该通过
访问。close()不是静态的。因此MainWindow::close()也不起作用。简单的close()就足够了。