2016-11-25 48 views
-3

当我的qt程序,我得到一些错误。看代码,我把错误与相应的行。我正在使用Windows 10上的Qt创建器来制作/运行此程序。语法错误:';'之前'{'

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

+4

如果'MainWindow'是一个类名,它不能跟着'.',它的静态方法应该通过'访问::'。 – myaut

+0

close()不是静态的。所以MainWindow :: close()也不起作用。一个简单的close();应该够了。 – drescherjm

回答

3

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

如果isFullScreen是对象的static方法,则可以使用MainWindow::isFullScreen()。否则,您可以使用this->isFullScreen()

MainWindow.close()必须进行类似的修改。

1

尝试以下替换代码:

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