由多线程关联到的类的作用和用法,和android语法很像:
1,QDialog 对话框基类,新建qt gui工程时需要选择QDialog类。===BaseActivity类
2,QPushButton 按钮控件。===Button类
(在头文件.h中定义参数时都需要加*,例如:QPushButton *stopbtn)
3,setWindowTitle(tr("线程"));跳出的对话窗口中标题显示内容为“线程”(调用控件类中的方法时要使用“->”符号,例如:window->addWidget(qpushbutton));
4,QHBoxLayout 水平布局管理器,动态加载控件时使用。===LinearLayout类
5,创建一个自定义线程类,首先要继承QThread类,
代码:class WorkThread :public QThread{Q_OBJECT}; 中括号后边的分号要有。要导入包,#include<QThread>===extends thread
6,构造函数写法:
.h文件中
classConsumer:publicQThread
{
public:
Consumer();
};
.cpp文件中:
#include"consumer.h"Consumer::Consumer(){}7,按钮控件点击事件:.h文件中用到的方法是public slots:类型的。===public onclick(View view){}
8,connect(pushbtn,SLGNAL(onclicked(),this,SLOTS(slotStart()));如果SLOT()函数里边是close()函数,点击pushbtn按钮后直接关闭对话框。
9,QMutex类(互斥量),异步线程,加锁,用法:mutex.lock(); qDebug("Hello"); qDebug("World"); mutex.unlock();=== synchronized { qDebug("Hello"); qDebug("World"); }10,QSemaphore类(信号量),互斥量只能锁定一次而信号量可以获取多次,它可以用来保护一定数量的同种资源。acquire()函数用于获取n个资源,当没有足够的资源时调用者将被阻塞直到有足够的可用资源。release(n)函数用于释放n个资源。(取该类中的方法用"."符号)。
11,QWaitCondition(唤醒类) wakeall()。
12,用到网络编程的时候,QtNetWork需要加在.pro文件里。写法是QT += network
13,QUdpSocket(udp套接口接收广播) ->bind(45454,QUdpSocket::ShareAddress);端口号,QUdpSocket::ShareAddress的作用是声明别的服务也可以绑定这个端口号。之后如果收到广播就执行slot函数内的操作:connect(receiver,SIGNAL(readyRead()),this,SLOT(processPendingDatagram()));QByteArray datagram;datagram.resize(receiver->pendingDatagramSize());receiver->readDatagram(datagram.data(),datagram.size());ui->label->setText(datagram);得到广播发过来的内容。14,QUdpSocket(udp套接口发送广播)QByteArray datagram="晨很笨";sender->writeDatagram(datagram.data(),datagram.size(),QHostAddress::Broadcast,45454);------------发送的内容,发送的长度,ip,端口号===broadcast