关于#qt#的问题,如何解决?

我刚学做的登入界面,“ 错误:expected class-name before '{' token” 但是出现了这个问题求解

dialog.h

#ifndef DIALOG_H
#define DIALOG_H

#include <QDial>
#include <QLabel>
#include <QLineEdit>
#include <QPushButton>

#include <QMessageBox>

class Dialog : public QDliog
{
    Q_OBJECT

public:
    Dialog();
private slots:
    void on_pushButton_click();
    void on_pushButton_2_click();

private:
    QLabel *user;
    QLabel *pwd;
    QLineEdit *userLineEdit;
    QLineEdit *pwdLineEdit;
    QPushButton *pushButton;
    QPushButton *pushButton_2;
};

#endif // DIALOG_H


```”
```c++
logindialog.h

#ifndef LOGINDIALOG_H
#define LOGINDIALOG_H

#include <QDialog>


namespace Ui {
class logindialog;
}

class logindialog : public QDialog
{
    Q_OBJECT

public:
    explicit logindialog(QWidget *parent = 0);
    ~logindialog();
    

private slots:
    void on_pushButton_clicked();

    void on_pushButton_2_clicked();

private:
    Ui::logindialog *ui;
};

#endif // LOGINDIALOG_H

dialog.cpp

#include "dialog.h"
#include "logindialog.h"
Dialog::Dialog()
{
    //创建窗口显示部件
       user = new QLabel(this);
       user->setText("用户名");
       user->move(70,80);

       pwd = new QLabel(this);
       pwd->setText("密码");
       pwd->move(70,130);

       userLineEdit = new QLineEdit(this);
       userLineEdit->setPlaceholderText("请输入用户名");
       userLineEdit->move(140,80);

       pwdLineEdit = new QLineEdit(this);
       pwdLineEdit->setPlaceholderText("请输入密码");
       pwdLineEdit->setEchoMode(QLineEdit::Password);
       pwdLineEdit->move(140,130);

       pushButton = new QPushButton(this);
       pushButton->setText("登陆");
       pushButton->move(50,200);

       pushButton_2 = new QPushButton(this);
       pushButton_2->setText("退出");
       pushButton_2->move(210,200);

       //连接信号和槽
       connect(pushButton,SIGNAL(clicked()),this,SLOT(on_pushButton_click()));
       connect(pushButton_2,SIGNAL(clicked()),this,SLOT(on_pushButton_2_click()));
   }

void loginDialog::on_pushButton_click()
{
    //trimmed()函数:去除字符串两端空格
    if (userLineEdit->text().trimmed() == "username" && pwdLineEdit->text() == "123456")
    {
        accept();
    }
    else {
        QMessageBox::warning(this,"警告!","用户名或者密码错误",QMessageBox::Yes);
        userLineEdit->clear();
        pwdLineEdit->clear();
        userLineEdit->setFocus();
    }
}

void logindialog::on_pushButton_2_clicked()
{
    close();
}
logindialog.cpp
#include "logindialog.h"
#include "ui_logindialog.h"
#include <QMessageBox>
#include "dialog.h"
logindialog::logindialog(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::logindialog)
{
    ui->setupUi(this);
}

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

void logindialog::on_pushButton_clicked()
{
    //如果用户名密码正确,则调用accept()槽函数。QDialog中的accept函数会关闭自身并发送QDialog::accepted标识
        if (ui->userLineEdit->text() == "username" && ui->pwdLineEdit->text() == "123456")
            accept();
        else
        {
            QMessageBox::warning(this,"警告","用户名或密码错误!",QMessageBox::Yes);
            //清除内容并定位光标
            ui->userLineEdit->clear();
            ui->pwdLineEdit->clear();
            ui->userLineEdit->setFocus();
        }

}

main.cpp
#include <QtGui/QApplication>
#include "logindialog.h"
#include "dialog.h"
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    logindialog w;
    logindialog dlg;
    if (dlg.exec() == QDialog::Accepted)
    {

    w.show();
    
    return a.exec();
    }
    else return 0;

}

“Devil组”引证GPT后的撰写

在 dialog.h 文件中,

class Dialog : public QDliog

应该改为

 class Dialog : public QDialog

因为 QDialog 是需要被继承的类名,而 QDliog 是一个拼写错误的类名。

双击报错,系统会跳转到错误行,找找此行上的{}是否配对,可能是括号没成对