qt实现图片查看器(有登录界面)

8 篇文章 0 订阅

一、 设计要求

运行成功后,首先弹出一个登录的界面(有用户名、密码),点击登录按钮,弹出主功能窗体,点击注册按钮,退出登录的界面。

二、功能主界面

行编辑器显示打开图片的路径,点击选择,可以选择要打开的图片并且显示到此界面上。

三、图片演示

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

四、代码

1.主函数main.c

#include "widget.h"
#include "mydialog.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;//主界面
    MyDialog obj;//登录界面
    if(obj.exec() == QDialog::Accepted)
    {
        w.show();//主界面显示
        return a.exec();
    }
    else return 0;
}

2.widget.cpp(功能界面.cpp文件)

#include "widget.h"
#include "ui_widget.h"
#include <QFileDialog>
#include <QDebug>

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
    this->resize(433,311);
    this->setWindowTitle("Picture Browser");


    //1.QLabel组件
    label = new QLabel(this);
    label->setGeometry(0, 0, 431, 311);
    label->setStyleSheet(QStringLiteral("background-color: rgb(170, 255, 255);"));

    label_2 = new QLabel(this);
    label_2->setGeometry(QRect(10, 280, 41, 31));
    label_2->setText("路径");
    label_2->setStyleSheet("color:red");

    //2.QLineEdit(行编辑器)
    lineEdit = new QLineEdit(this);
    lineEdit->setGeometry(60, 280, 280, 31);
    qDebug() << lineEdit->text();

    //3.QPushButton组件
    pushButton = new QPushButton(this);
    pushButton->setGeometry(QRect(360, 280, 91, 31));
    pushButton->setText("选择");

    connect(pushButton,SIGNAL(clicked(bool)),this,SLOT(pushButton_slots()));
}

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

void Widget::pushButton_slots()
{

    QString FileName =  QFileDialog::getOpenFileName(this,
                                                     "打开文件",
                                                     QDir::currentPath(),
                                                     "JPG 文件(*.jpg *.JPG);;PNG 文件(*.PNG *.png);;ICO 文件(*.ico *.ICO)"
                                                     );
    lineEdit->setText(QDir::currentPath());//单行文本框显示图片当前路径

    //label显示图片
    QPixmap pixmap;//保存图片像素点
    pixmap.load(FileName);//加载图片
    label->setPixmap(pixmap);//显示图片    
    label->setScaledContents(true);//内容自适应
    if(FileName.isEmpty())//判断文件名是否为空
    return;
    qDebug() << FileName;

}

3widget.h(功能界面.h文件)

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QPushButton>
#include <QLabel>
#include <QLineEdit>
#include <QDialog>
namespace Ui {
class Widget;
}

class Widget : public QWidget
{
    Q_OBJECT

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

private slots:
    void pushButton_slots();
private:
    Ui::Widget *ui;
    QPushButton *pushButton;
    QLabel *label,*label_2;;
    QLineEdit  *lineEdit;
};
#endif // WIDGET_H

4.mydialog.cpp(登录界面.cpp文件)

#include "mydialog.h"
#include "ui_mydialog.h"
#include "widget.h"
#include <QDialog>
MyDialog::MyDialog(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::MyDialog)
{
    ui->setupUi(this);
    this->setWindowTitle("login face");//设置登录界面标题
    this->setWindowIcon(QIcon(":/images/ppt1"));//设置登录标题图像
    ui->lineEdit_3->setMaxLength(6);//设置密码最大长度
    ui->lineEdit_3->setEchoMode(QLineEdit::Password);//密码方式显示
}
MyDialog::~MyDialog()
{
    delete ui;
}
void MyDialog::on_pushButton_clicked()//登录按钮
{
    if((ui->lineEdit->text() == "Tom") && (ui->lineEdit_3->text() == "123"))//判断条件;账号密码
    {
        accept();//调用 accept( ) 函数,并返回执行结果 QDialog::Accepted
    }
}
void MyDialog::on_pushButton_2_clicked()//注册按钮
{
    reject();//拒绝
}

5.mydialog.h(登录界面.h文件)

#ifndef MYDIALOG_H
#define MYDIALOG_H

#include <QDialog>

namespace Ui {
class MyDialog;
}

class MyDialog : public QDialog
{
    Q_OBJECT

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

private slots:

    void on_pushButton_clicked();

    void on_pushButton_2_clicked();

private:
    Ui::MyDialog *ui;
};
#endif // MYDIALOG_H

五、反思总结( ^ - ^ )

这是博主发布的第一篇博客,用以记录自己学习的收获以及交流分享,博主还在菜鸟程序员的道路上摸爬滚打,水平有限,有错误之处,希望多多指正哟~

此项目可改进部分:注册功能还没有写,账号密码是预先写入了源代码,可以通过注册按钮把账号密码用数据库储存起来,在登录时和数据库中的数据对比。功能界面的行编辑框有点小,显示不全路径。功能界面是敲的代码,登录界面是采用ui设计师,我是希望通过两种方式对比,让大家更好理解。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值