这是跟着网上教学视频学习的一些笔记,不全,仅作参考。
mainwindow.cpp文件
#include "mainwindow.h"
#include<QPushButton>//按钮头文件
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
QPushButton *btn=new QPushButton;
//btn->show();//以顶层方式弹出窗口插件,即另外打开一个窗口
btn->setParent(this);//让btn对象依赖在Mainwindow窗口中,this指向当前对象即MainWindow对象
btn->setText("first btn");//设置按钮上的文字
//第二种格式创建按钮
QPushButton *btn2=new QPushButton("second btn",this);//会覆盖前一个按钮
resize(600,400);//重置窗口大小
//setFixedSize(600,400);//设置固定窗口大小
//移动按钮
btn2->move(100,0);
//设置按钮大小
btn->resize(50,50);
//设置窗口标题
setWindowTitle("firstapp");
}
MainWindow::~MainWindow()
{
}
1、 设置登录对话框
#include "mainwindow.h"
#include <QApplication>
#include "logindlg.h"//记得包含头文件
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
LoginDlg dlg;//建立新建的LoginDlg类的实例
if(dlg.exec()==QDialog::Accepted)//利用Accepted返回值判断按钮是否被按下
{
w.show();//如果按钮被按下,显示主窗口
return a.exec();//程序一直运行,直到主窗口关闭
}else
{
return 0;//如果没有被按下,则不会进入主窗口,整个程序结束运行
}
}
2、设置对话框对象
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDialog>//包含头文件
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
ui->pushButton->setText("新窗口");//更改按钮上的文字
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_pushButton_clicked()//自动生成槽
{
QDialog *dlg=new QDialog(this);//创建一个对话框对象,this参数表示该对话框的父窗口是MainWindow
dlg->show();
}
3、设置输入密码的对话框
#include "logindialog.h"
#include "ui_logindialog.h"
#include<QMessageBox>//提供多种对话框
LoginDialog::LoginDialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::LoginDialog)
{
ui->setupUi(this);
ui->pwdlineEdit->setEchoMode(QLineEdit::Password);//设置输入密码时看不到密码,显示成小黑点
}
LoginDialog::~LoginDialog()
{
delete ui;
}
void LoginDialog::on_loginBtn_clicked()
{
if(ui->usrlineEdit->text().trimmed()==tr("zps")&&ui->pwdlineEdit->text()==tr("123456"))//trimmed()去除字符串前后的空格
{
accept();
}else
{
QMessageBox::warning(this,tr("警告"),tr("用户名或密码错误!"),QMessageBox::Yes);//warning是警告对话框
//this表明父窗口是登录对话框,然后为窗口标题,界面显示的内容,最后显示的按钮(用来关闭对话框)
//清空用户名和密码信息,并将光标定位到用户名输入框中
ui->usrlineEdit->clear();
ui->pwdlineEdit->clear();
ui->usrlineEdit->setFocus();
}
}
纯代码设置登录框
其它文件不要改,只需该以下文件
logindialog.h文件
#ifndef LOGINDIALOG_H
#define LOGINDIALOG_H
#include<QDialog>//包含头文件
#include <QObject>
//类的前置声明
class QLabel;
class QLineEdit;
class QPushButton;
class LoginDialog : public QDialog
{
Q_OBJECT;//使用信号和槽必须添加该宏
public:
explicit LoginDialog(QWidget *parent=0);
~LoginDialog();//添加析构函数
private:
//定义一些部件对象的指针
QLabel *usrLabel;
QLabel *pwdLabel;
QLineEdit *usrLineEdit;
QLineEdit *pwdLineEdit;
QPushButton *loginBtn;
QPushButton *exitBtn;
private slots:
void login();//声明槽函数
};
#endif // LOGINDIALOG_H
logindialog.cpp文件
#include "logindialog.h"
#include<QLabel>
#include<QLineEdit>
#include<QPushButton>
#include<QMessageBox>
LoginDialog::LoginDialog(QWidget *parent):
QDialog(parent)
{
//依次设置部件信息
usrLabel=new QLabel(this);//父窗口部件
usrLabel->move(70,80);//设置部件左上角的坐标
usrLabel->setText(tr("用户名:"));//设置文本
usrLineEdit=new QLineEdit(this);
usrLineEdit->move(140,80);
usrLineEdit->setPlaceholderText(tr("请输入用户名"));//设置占位符文本
pwdLabel=new QLabel(this);
pwdLabel->move(70,130);
pwdLabel->setText(tr("密码:"));
pwdLineEdit=new QLineEdit(this);
pwdLineEdit->move(140,130);
pwdLineEdit->setPlaceholderText(tr("请输入密码"));
pwdLineEdit->setEchoMode(QLineEdit::Password);//设置密码不可见
loginBtn=new QPushButton(this);
loginBtn->move(50,200);
loginBtn->setText(tr("登录"));
exitBtn=new QPushButton(this);
exitBtn->move(210,200);
exitBtn->setText(tr("退出"));
//connect函数用来关联信号和槽
//参数依次表示:发射信号的部件,发射的信号,接受信号的部件,要执行的槽
connect(loginBtn,&QPushButton::clicked,this,&LoginDialog::login);
connect(exitBtn,&QPushButton::clicked,this,&LoginDialog::login);
}
LoginDialog::~LoginDialog()
{
}
void LoginDialog::login()
{
if(usrLineEdit->text().trimmed()=="zps"&&pwdLineEdit->text()=="123456")
{
accept();
}else
{
QMessageBox::warning(this,tr("警告"),tr("用户名或密码错误!"),QMessageBox::Yes);
usrLineEdit->clear();
pwdLineEdit->clear();
usrLineEdit->setFocus();
}
}
main.cpp文件
#include "mainwindow.h"
#include <QApplication>
#include "logindialog.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
LoginDialog dlg;
if(dlg.exec()==QDialog::Accepted)
{
w.show();
return a.exec();
}else
{
return 0;
}
}