
1、打开串口:使用QSerialPort类打开串口,设置相关参数(如波特率、数据位、停止位等)。
2、定义接收缓冲区:定义一个缓冲区用于存储接收到的数据。根据需要可以选择使用QByteArray或者char数组等。
3、设置定时器:使用QTimer类设置一个定时器,定时读取串口接收缓冲区中的数据。
4、读取数据:在定时器的槽函数中,使用QSerialPort类的read()函数从串口接收缓冲区中读取数据,并将其存储到预定义的接收缓冲区中。
5、处理数据:对接收到的数据进行解析和处理。如果接收到的数据是定长数据,则可以根据数据长度进行分包处理。
我是通过QNetworkAccessManager 、QNetworkReply、QNetworkRequest从服务器获取数据的,现在不清楚怎么获取cookies。
感谢。我是通过QNetworkAccessManager 、QNetworkReply、QNetworkRequest从服务器获取数据的,现在不清楚怎么获取cookies。
感谢。
之所以没有答案,不是这个难,而是很简单。
直接从 小对话框里面读数据就完事了。
刚写的例子:
//////////////////////dialogcpp
Dialog::Dialog(QWidget parent) :
QDialog(parent),
ui(new Ui::Dialog)
{
ui->setupUi(this);
ui->lineEditPassword->setEchoMode(QLineEdit::Password);
}
Dialog::~Dialog()
{
delete ui;
}
void Dialog::on_pushButtonLogin_clicked()
{
//获取数据
m_strUser = ui->lineEditUser->text();
m_strPassword = ui->lineEditPassword->text();
//校验数据
if(m_strUserisEmpty() || m_strPasswordisEmpty())
{
QMessageBox::information(this, QString(tr("Tips"))
,QString(tr("User name or Password is empty!")));
//等待下次按钮
}
else
{
//正确的用户名和密码
this->accept();
}
}
void Dialog::on_pushButtonQuit_clicked()
{
this->reject();
}
////////////////////////////////mainwindowcpp
#include "mainwindowh"
#include "ui_mainwindowh"
#include "dialogh"
MainWindow::MainWindow(QWidget parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
//
ui->setupUi(this);
//
Dialog pDlgLogin = new Dialog(NULL);
//以模式对话框显示
int nResult = pDlgLogin->exec();
if(nResult != QDialog::Accepted)
{
//登录错误,退出
exit(1);
}
//正常登录
//读取用户名和密码
m_strUser = pDlgLogin->m_strUser;
m_Password = pDlgLogin->m_strPassword;
//设置标签为用户名
ui->labelUserName->setText(m_strUser);
//绑定退出信号到关闭槽函数
connect(ui->action_Quit, SIGNAL(triggered()), this, SLOT(close()));
//将主窗口移到指定位置
this->move(QPoint(0,0));
//
}
MainWindow::~MainWindow()
{
delete ui;
}
供参考:
maincpp 文件
#include <QApplication>#include "clogindialogh"
int main(int argc, char argv[])
{
QApplication app(argc, argv);
CLoginDialog loginDlg = new CLoginDialog();
loginDlg->show();
return appexec();
}
clogindialogh 文件
#ifndef CLOGINDIALOG_H#define CLOGINDIALOG_H
#include <QDialog>
#include <QLabel>
#include <QPushButton>
#include <QComboBox>
#include <QLayout>
class CLoginDialog : public QDialog
{
Q_OBJECT
public:
explicit CLoginDialog(QWidget parent = nullptr);
private slots:
void showMainWindow();
private:
QComboBox userTypeCombo;
};
#endif // CLOGINDIALOG_H
clogindialogcpp 文件
#include "clogindialogh"#include "cwidgetah"
#include "cwidgetbh"
CLoginDialog::CLoginDialog(QWidget parent) : QDialog(parent)
{
QHBoxLayout lineLayout1 = new QHBoxLayout();
lineLayout1->addWidget(new QLabel(tr("登录类型")));
userTypeCombo = new QComboBox();
userTypeCombo->addItem(tr("教师"),0);
userTypeCombo->addItem(tr("学生"),1);
lineLayout1->addWidget(userTypeCombo);
QHBoxLayout lineLayout2 = new QHBoxLayout();
lineLayout2->addStretch();
QPushButton loginBt = new QPushButton(tr("登录"));
connect(loginBt,&QPushButton::clicked,this,&CLoginDialog::showMainWindow);
lineLayout2->addWidget(loginBt);
QVBoxLayout mainLayout = new QVBoxLayout();
mainLayout->addLayout(lineLayout1);
mainLayout->addLayout(lineLayout2);
setLayout(mainLayout);
}
void CLoginDialog::showMainWindow()
{
if(userTypeCombo->currentData() == 0){
CWidgetA a = new CWidgetA();
a->show();
}else{
CWidgetB b = new CWidgetB();
b->show();
}
close();
}
cwidgetah 文件
#ifndef CWIDGETA_H#define CWIDGETA_H
#include <QMainWindow>
class CWidgetA : public QMainWindow
{
Q_OBJECT
public:
explicit CWidgetA(QWidget parent = nullptr);
};
#endif // CWIDGETA_H
cwidgetacpp 文件
#include "cwidgetah"#include <QLabel>
CWidgetA::CWidgetA(QWidget parent) : QMainWindow(parent)
{
setCentralWidget(new QLabel(tr("这是窗口A")));
}
cwidgetbh
#ifndef CWIDGETB_H
#define CWIDGETB_H
#include <QMainWindow>
class CWidgetB : public QMainWindow
{
Q_OBJECT
public:
explicit CWidgetB(QWidget parent = nullptr);
};
#endif // CWIDGETB_H
cwidgetbcpp
#include "cwidgetbh"#include <QLabel>
CWidgetB::CWidgetB(QWidget parent) : QMainWindow(parent)
{
setCentralWidget(new QLabel(tr("这是窗口B")));
}
以上就是关于qt串口读取定长数据全部的内容,包括:qt串口读取定长数据、qt一个登录窗体中实现和qq一样记录用户名和密码的功能 并且自动登入 求一个简单实现的demo、QT5.7中使用QNetworkReply怎么获取http返回的cookies数据等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)