2016-11-25 3 views
-3

Wenn mein qt-Programm bekomme ich einige Fehler. Schau dir den Code an, ich setze die Fehler mit den entsprechenden Zeilen. Ich benutze Qt Creator auf Windows 10, um dieses Programm zu erstellen.Syntaxfehler: ';' vor '{'

#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

+4

Wenn 'MainWindow' ist ein Klassenname, kann sie nicht von' .', seine statische Methoden über 'sollte ::' zugegriffen folgen. – myaut

+0

close() ist nicht statisch. Daher wird MainWindow :: close() auch nicht funktionieren. Ein einfaches Schließen(); sollte genug sein. – drescherjm

Antwort

3

MainWindow.isFullScreen() ist ein ungültiger Ausdruck, da MainWindow ein Typ ist, kein Objekt. Wenn die isFullScreenstatic Methode des Objekts ist, können Sie MainWindow::isFullScreen() verwenden. Andernfalls können Sie verwenden.

MainWindow.close() müssen ähnlich geändert werden.

1

Versuchen Sie, die folgenden Ersatzcode:

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