智能家居实训(华清远见)第六天
课程主要内容:(1)安装QT 编译软件;(2)学习软件的基本用法,创建工程文件(3)了解软件中ui界面的组件及其属性用法。(4)代码编写以及运行:组件使用;图片显示;计算器;多页面跳转;定时器生成;网络连接。代码以及作业://图片显示#include "pic.h"#include "ui_pic.h"pic::pic(QWidget *parent) :QMainWindow(parent),u
·
课程主要内容:
(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一样拖拽过去就好了,也是比较容易操作的。要注意的就是头文件部分,我老是忘记写头文件,找半天错误,还是要细心认真的写代码。
更多推荐
已为社区贡献1条内容
所有评论(0)