QT编程 QT实验 QtGUI组件使用

实验目的

1. 掌握GUI应用程序的基本框架和信号与槽机制的工作原理; 2. 掌握Qt窗口部件的使用; 3. 掌握Linux下GUI程序的开发的流程。 4. 掌握Qt设计器的使用。

实验内容

1. 实现一个简单计算器:可以实现整数的加减运算,要求控件的布局采用布局管理器来管理。(在实现运算的时候要注意QString类型与int类型数值之间的转换)
2. 创建一用户注册登录对话框模拟用户注册登录过程。要求验证用户名密码是否正确,验证失败信息用消息对话框提示。验证成功则重新打开一个新的对话框,该对话框上显示当前用户的姓名、学号、班级、地址等信息。
3. 实现一个简单的文本编辑器。要求:
(1) 该窗口有标题栏、菜单栏和工具栏,请使用setwindowtittle()方法设置标题。
(2) 菜单栏有file和edit两个下拉菜单。File菜单下有新建、打开、退出三个action;Edit菜单下有复制、粘贴、剪切三个action。
(3) 创建一个edit工具栏,该工具栏包含保存、剪切、粘贴三个action。

实验过程(请用简单的文字描述)

实验一,

1)创建一个qt设计师界面类

2)在视图界面添加计算器按钮,局部采用格栅布局总体采用垂直布局

3)定义每个按钮的槽函数,实现简单加减逻辑

实验二,

1)创建一个qt设计师界面类

2) 在视图界面添加控件

3)实现登陆验证,和跳转页面

实验三,

1)创建一个qt设计师界面类

2)用setwindowtittle()方法设置标题

3)添加菜单栏和工具栏

4)实现文件的读取

实验详细操作步骤或程序清单

实验一

#include "widget.h"

#include "ui_widget.h"
#include <QDebug>
Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
}
 
Widget::~Widget()
{
    delete ui;
}
 
void Widget::on_pushButton_deng_clicked()
{
    int z;
    if(k == 1){
        z = x+y;
    }else if (k == -1){
        z = x-y;
    }
    ui->label->setText(QString::number(z));
    x = z;
    k = 0;
}
 
 
void Widget::on_pushButton_jia_clicked()
{
    k = 1;
    QString s = ui->label->text()+ui->pushButton_jia->text();
    ui->label->setText(s);
}
 
void Widget::on_pushButton_jian_clicked()
{
    k = -1;
    QString s = ui->label->text()+ui->pushButton_jian->text();
    ui->label->setText(s);
 
}
void Widget::on_pushButton_clicked()
{
    //7
    QString s = ui->label->text()+ui->pushButton->text();
    ui->label->setText(s);
    int t = ui->pushButton->text().toInt();
    if (k == 0){
        x = t;
    }else{
        y = t;
    }
}
 
void Widget::on_pushButton_14_clicked()
{
    // 8
    QString s = ui->label->text()+ui->pushButton_14->text();
    ui->label->setText(s);
    int t = ui->pushButton_14->text().toInt();
    if (k == 0){
        x = t;
    }else{
        y = t;
    }
}
 
void Widget::on_pushButton_9_clicked()
{
    QString s = ui->label->text()+ui->pushButton_9->text();
    ui->label->setText(s);
    int t = ui->pushButton_9->text().toInt();
    if (k == 0){
        x = t;
    }else{
        y = t;
    }
 
}
 
 
void Widget::on_pushButton_0_clicked()
{
    QString s = ui->label->text()+ui->pushButton_0->text();
    ui->label->setText(s);
    int t = ui->pushButton_0->text().toInt();
    if (k == 0){
        x = t;
    }else{
        y = t;
    }
 
}
 
void Widget::on_pushButton_6_clicked()
{
    QString s = ui->label->text()+ui->pushButton_6->text();
    ui->label->setText(s);
    int t = ui->pushButton_6->text().toInt();
    if (k == 0){
        x = t;
    }else{
        y = t;
    }
 
}
 
void Widget::on_pushButton_5_clicked()
{
    QString s = ui->label->text()+ui->pushButton_5->text();
    ui->label->setText(s);
    int t = ui->pushButton_5->text().toInt();
    if (k == 0){
        x = t;
    }else{
        y = t;
    }
 
}
 
void Widget::on_pushButton_4_clicked()
{
    QString s = ui->label->text()+ui->pushButton_4->text();
    ui->label->setText(s);
    int t = ui->pushButton_4->text().toInt();
    if (k == 0){
        x = t;
    }else{
        y = t;
    }
 
}
 
void Widget::on_pushButton_3_clicked()
{
    QString s = ui->label->text()+ui->pushButton_3->text();
    ui->label->setText(s);
    int t = ui->pushButton_3->text().toInt();
    if (k == 0){
        x = t;
    }else{
        y = t;
    }
 
}
 
void Widget::on_pushButton_2_clicked()
{
    QString s = ui->label->text()+ui->pushButton_2->text();
    ui->label->setText(s);
    int t = ui->pushButton_2->text().toInt();
    if (k == 0){
        x = t;
    }else{
        y = t;
    }
 
}
 
void Widget::on_pushButton_1_clicked()
{
    QString s = ui->label->text()+ui->pushButton_1->text();
    ui->label->setText(s);
    int t = ui->pushButton_1->text().toInt();
    if (k == 0){
        x = t;
    }else{
        y = t;
    }
 
}

实验二

#include "widget.h"
#include "ui_widget.h"
#include <QMessageBox>
#include <form_log.h>
#include <QWidget>
Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    QImage *img_mainicon;//主图标显示在右上角lable中
    img_mainicon =new QImage;//新建一个image对象
    img_mainicon->load(":/Img/屏幕截图 2022-04-29 173103.png"); //载入图片到img对象中
    img_mainicon->scaled(ui->label->size(),Qt::KeepAspectRatio);//把图片
    ui->label->setScaledContents(true);
    ui->label->setPixmap(QPixmap::fromImage(*img_mainicon)); //将图片放入label,使用setPixmap,注意指针*img
    //ui->label_mainicon->setAlignment(Qt::AlignCenter); //将图片放在label中心,用缩放了就不需要了
 
}
 
Widget::~Widget()
{
    delete ui;
}
 
 
void Widget::on_pb_ok_clicked()
{
    QString s_1 = ui->lineEdit->text();
    QString s = ui->lineEdit_2->text();
    if (s_1 == s_user && s ==s_password)
    {
        QMessageBox *box = new QMessageBox;
        box->setText("登陆成功");
        box->show();
 
        this->close();
        Form_log *k = new Form_log();
        k->show();
 
    }
    else{
        QMessageBox *box = new QMessageBox;
        box->setText("登陆失败");
        box->show();
    }
}

实验三

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QFileDialog>
#include <QFile>
#include <QToolBar>
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    this->setWindowTitle("自定义文件处理");
    QMenu *m1 = new QMenu;
    m1->setTitle("file");
    QAction *a0 = new QAction("新建");
    m1->addAction(a0);
    QAction *a1 = new QAction("打开");
    m1->addAction(a1);
    QAction *a2 = new QAction("退出");
    m1->addAction(a2);
    ui->menubar->addMenu(m1);
 
    QMenu *m2 = new QMenu;
    m2->setTitle("edit");
    QAction *b0 = new QAction("复制");
    m2->addAction(b0);
    QAction *b1 = new QAction("粘贴");
    m2->addAction(b1);
    QAction *b2 = new QAction("剪切");
    m2->addAction(b2);
    ui->menubar->addMenu(m2);
 
    QToolBar *tool_bar = new QToolBar(this);
    this->addToolBar(tool_bar);
    QAction *new_action = new QAction("保存");
    QAction *open_action = new QAction("剪切");
    QAction *save_action = new QAction("粘贴");
    tool_bar->addAction(new_action);
    tool_bar->addAction(open_action);
    tool_bar->addAction(save_action);
 
 
 
 
 
    connect(a1,&QAction::triggered,[=](){
       QString s = QFileDialog::getOpenFileName(this,"打开目录","./","");
       ui->lineEdit->setText(s);
       QFile f1(s);
       if (!f1.open(QIODevice::ReadOnly))
           return ;
       QByteArray arr;
       while (!f1.atEnd()){
           arr += f1.readLine();
       }
       ui->textEdit->setText(arr);
    });
 
    connect(a2,&QAction::triggered,[=](){
        QString filename = QFileDialog::getSaveFileName(this, "另存为", "./");
        QFile file(filename);
        if(!file.open(QIODevice::WriteOnly))
            return ;
        QString s = ui->textEdit->toPlainText();
        file.write(s.toUtf8());
        file.close();
    });
}
MainWindow::~MainWindow()
{
    delete ui;
}

实验结果(上传实验结果截图或者简单文字描述)

实验三

实验二

实验一

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值