C++qt Creator学习

这是跟着网上教学视频学习的一些笔记,不全,仅作参考。
在这里插入图片描述
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;
    }


}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JPC客栈

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值