我刚学做的登入界面,“ 错误: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 是一个拼写错误的类名。
双击报错,系统会跳转到错误行,找找此行上的{}是否配对,可能是括号没成对