-
UI图形界面
Ui:图形界面的一个类
头文件中:
private:
Ui::ChatPage *ui; //类的私有属性,表明对象无法进行修改。
.cpp文件中
ui(new Ui::login)
{
ui->setupUi(this);//分配 ui 相应内存空间,该对象指向对应login类下的ui界面
} -
首个图形界面都main中创建。
-
显示某一类对应的图形界面
ChatPage *chatPage; //对应类ChatPage的对象
chatPage = new ChatPage();//申请内存
chatPage->setAttribute(Qt::WA_DeleteOnClose); //关闭界面时自动释放内存
chatPage->show();//调用方法show显示界面
chatPage->close();//关闭界面 -
设置label控件显示图片或文本:
#include “QPixmap” //头文件
QString *headPath = new QString("//图片文件路径"); //QT中字符对象保存路径
QPixmap *headPix = new QPixmap(*headPath); //用图片对象来保存该字符对象
*headPix = headPix->scaled(ui->headLabel->size()); //调用图片类中scaled行为调整图片大小
ui->headLabel->setPixmap(*headPix); //label控件显示图片 -
"设置Button控件显示图片"
#include “QPixmap” //头文件
QString *addPath = new QString("//图片文件路径");
QPixmap *addPix = new QPixmap(*addPath);
*addPix = addPix->scaled(ui->addButton->size());
ui->addButton->setIcon(QIcon(*addPix));//设置按钮的图标,跟label方式不同 -
"设置Button控件显示文本"
QString msg;
ui->addButton->setText(msg);//控件显示文本 -
设置按钮信号与槽:
在ui设计界面中将对应按钮控件设置槽函数,并在槽函数中指定相应的处理行为
头文件中
private slots: void on_addButton_clicked();//指定槽函数
.cpp文件中定义槽函数
void ChatPage::on_addButton_clicked()
{
//处理行为
} -
文本输入框添加提示文本:setPlaceholderText(提示字符串);
-
explicit关键字:
一般只将有单个参数的构造函数声明,不希望编译器对参数进行自动类型转换(又称编译器隐式转换) -
switch(){case…}语句内不能声明变量
-
QT中字符对象的转换:
QString str = “xxxxx” 或者控件中的文本 QString str = ui->控件->text();
//调用字符对象中toStdString().c_str()方法转换为C中的Char * 字符串指针。
方式1:”const char *c = str.toStdString().c_str();//不靠谱
方式2:QByteArray ba = str.toLatin1(); const char *c= ba.data(); -
MD5加密
#include “QCryptographicHash” //头文件
QString passward = ui->控件->text(); //获取控件中的文本存储到字符串对象
//MD5加密,QByteArray为字符数组,将字符串对象转为字符数组
QByteArray ba = passward.toLatin1();//toLatin1转字符数组
ba = QCryptographicHash::hash(ba, QCryptographicHash::Md5);//对字符数组进行加密转换,返回新的字符数组
passward.clear();
passward.append(ba.toHex()); //由于ba为字符数组,需用tohex转为字符串对象
const char *p = passward.toStdString().c_str();//字符数组转换为QT的字符串对象,在转为char *字符串 -
UDP:客户端socket编程
在类的私有属性中声明: QUdpSocket *socket;//对象无法修改
构造函数中申请内存:socket = new QUdpSocket();
//端口号绑定:socket->bind(11111);//QT4.6.2以下客户端必须显示bind端口号才能连接服务器
//连接服务器:connect(socket, SIGNAL( readyRead(), this, SLOT( readDataHandler() ));
//接收服务器数据
SLOT( readDataHandler() ) 为绑定当前socket套接字接口,若收到数据则会调用对应槽函数readDataHandler()进行处理。
socket->readDatagram(接收buf, 大小);
//向服务器发送数据:
QHostAddress *address = new QHostAddress(QString(DENGLU_SERVER_IP));//将字符串 ip 转为QT中IP对应的QHostAddress对象
//其中网络字节序在QT中内部进行转换了,可以直接写数据报到对应服务器端口。
socket->writeDatagram((const char *)&denglu, sizeof(denglu), *address, DENGLU_SERVER_PROT); -
UDP:服务器socket编程
在虚拟机下搭建各服务的服务器 -
打印字符对象(调试用)
qDebug() << 字符对象; -
在QTreeWidget控件添加条目并显示图标和文本信息
QTreeWidgetItem *item = new QTreeWidgetItem(ui->QTreeWidget控件);
item->setIcon(0, QIcon(“图片路径”));
item->setText(0, 文本信息); -
A与B跨ui图形界面相互操作
在A中声明一个指针,该属性用于保存B中对应的空间
在B中将B中ui对应的空间指针赋给A的指针,在A的文件中遍可以对B控件进行操作 -
QT中设置utf-8编码格式
QTextCodec *codec = QTextCodec::codecForName(“UTF-8”);
QTextCodec::setCodecForLocale(codec); -
对象扩展方法
在对应public中声明 function();
在定义function中引用类已具备的函数功能基础上再进行附加操作。 -
网络编程中,会出现QT画面按钮无反应,属于网络延迟等问题。
-
聊天中设置接受数据与发送数据字体颜色,通过样式表无法解决,应用HTML语句
QString msg;
msg.clear();
msg.append(QString(""));
msg.append(QString(聊天正文));
msg.append(QString(""));
ui->chartTextEdit->append(QString(msg));//在控件中显示 -
QString().toLatin1()不支持中文,ISO-8859-1编码是单字节编码,向下兼容ASCII,其编码范围是0x00-0xFF,可使用toLocal8Bit(),unicode编码
-
控件边框设置linewidth、控件按钮显示设置QPushButton、时间显示LCD Number控件以及设置显示位数digitCount(能够显示整数、浮点、字符串)。
-
定时器与时间类
头文件
#include
#include
添加属性及行为
QTimer *timer;
void timerHandler();
timer = new QTimer();
connect(timer, SIGNAL(timeout()), this, SLOT(timerHandler()));
timer->start(1000);//毫秒级
void ChatPage::timerHandler()
{
//获取当前日期时间
QDateTime dataTime = QDateTime::currentDateTime();
QString t = dataTime.toString(QString(“yy-MM-dd hh:mm:ss”));
ui->lcdNumber->display(t);
} -
单击/双击识别
设置槽函数,通过控件所拥有的方法判断
isChecked()//单击
isdoubleClicked()//双击 -
非系统指定或当前目录时,对库文件和头文件的声明,在pro工程中
#添加头文件的位置
#INCLUDEPATH += /usr/include/
#添加库的位置
#LIBS += -L/usr/lib -lsqlite3 -
记住密码
通过控件判断是否记住密码,数据库对账户密码进行记录,若第一次则插入否则更新。记住密码数据表保存于客户端中,由客户端调用;实时监测控件文本信息:定义信号槽函数textChanged(); 账户框信息发生变动则发生信号,查询数据库,若该用户在记录密码表中有对应信息,则填充到密码框对应控件中,若不匹配则清空密码框。
QT初学之聊天工具的搭建项目笔记
最新推荐文章于 2023-04-12 08:43:32 发布