课程主要内容:
(1)安装QT 编译软件;
(2)学习软件的基本用法,创建工程文件
(3)了解软件中ui界面的组件及其属性用法。
(4)代码编写以及运行:组件使用;图片显示;计算器;多页面跳转;定时器生成;网络连接。
代码以及作业:

//图片显示
#include "pic.h"
#include "ui_pic.h"

pic::pic(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::pic)
{
    ui->setupUi(this);
    this->setWindowTitle("hhh");
    this->setWindowIcon(QIcon(":/004.png"));

    QPixmap pix = QPixmap(":/001.png").scaled(this->size());
    QPalette palette;
    palette.setBrush(backgroundRole(),QBrush(pix));
    this->setPalette(palette);
}

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

void pic::on_pushButton_clicked()
{

}
//计算器
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "qmessagebox.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

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

void MainWindow::on_pushButton_clicked()
{
    QString str1 = ui->lineEdit->text();
    QString str2 = ui->lineEdit_2->text();

    double arg1 = str1.toDouble();
    double arg2 = str2.toDouble();
    double result = 0;
    if(ui->comboBox->currentText()=="+")
    {
        result = arg1 + arg2;
    }
    else if(ui->comboBox->currentText()=="-")
    {
        result = arg1 - arg2;
    }
    else if (ui->comboBox->currentText()=="*")
    {
        result = arg1 *arg2;
    }
    else
    {
        if(arg2==0)
        {
            QMessageBox::warning(this,"警告","除法运算中除数不能为0,请重新输入");
            myClear();
        }
        else
        {
            result = arg1/arg2;
        }
    }
    QString tmp1 = QString::number(result);
     ui->label_2->setText(tmp1);
}
void MainWindow::myClear()
{
    ui->lineEdit->clear();
     ui->lineEdit_2->clear();
      ui->label_2->clear();
}

//定时器生成:
#include "widget.h"
#include "ui_widget.h"
#include <QTimer>
#include <QTime>
widget::widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::widget)
{
    ui->setupUi(this);
    connect(&timer,SIGNAL(timeout()),this,SLOT(timeroutSlot()));
    //参数1:信号发出者
    //参数2:发出怎样的信号
    //参数3:this
    //参数4:槽函数
    ui->lcdNumber->setDigitCount(8);
    QTime time(0,0,0);
    ui->lcdNumber->display(time.toString("hh:mm:ss"));
    n = 0;
}

widget::~widget()
{
    delete ui;
}
void widget::timeroutSlot()
{
    QTime time(0,0,0);
    n++;
    QTime tmp = time.addSecs(n);
    ui->lcdNumber->display(tmp.toString("hh:mm:ss"));
}

void widget::on_pushButton_clicked()
{
    timer.start(1000);
}
//网络连接:
#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
    connect(&socket,SIGNAL(connected()),this,SLOT(myconnectSlot()));
    connect(&socket,SIGNAL(readyRead()),this,SLOT(recvSlot()));
}

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

void Widget::on_pushButton_clicked()
{
    QString ip=ui->lineEdit->text();
    int port = ui->lineEdit_2->text().toInt();
    socket.connectToHost(ip,port);
}
void Widget::myconnectSlot()
{
    ui->pushButton->setEnabled(false);
}

void Widget::on_pushButton_2_clicked()
{
   QString str = ui->lineEdit_3 ->text();
    QByteArray arr;
    arr.append(str);
    socket.write(arr);
}
void Widget::recvSlot()
{
    char buf[100]={0};
    socket.read(buf,sizeof(buf));
    QString str=QString::fromUtf8(buf);
    ui->recvlabel->setText(str);
}

收获和感悟:Qt这个软件是基于C++的编程语法,没有学过不过感觉还好学过C语言和C#之后,写代码也没有很困难,或者说很难理解中间的逻辑,界面设计方面和vs一样拖拽过去就好了,也是比较容易操作的。要注意的就是头文件部分,我老是忘记写头文件,找半天错误,还是要细心认真的写代码。

Logo

鸿蒙生态一站式服务平台。

更多推荐